Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。
我有一个使用串行端口与设备通信的应用程序。 我总是发送命令并接收,但 2/3 小时后我收到我在标题上写的消息。 我已经尝试过...
我正在尝试在 WPF DataGrid 中复制 Windows 文件资源管理器的选择行为。具体来说,我的目标是实现一个模仿文件资源管理器功能的选择矩形
为什么在 ValidationRule 的 Validate 函数中,decimal.TryParse(valueString, out valueParsed) 返回 true,给出 1.0.1?
这是我的代码: 使用 System.Windows.Controls; 命名空间 MyTest.validations { 公共类 DecimalValidationRule : ValidationRule { 公共覆盖 ValidationResult 验证(对象...
这是我的视图模型: 公共类 ViewModelData :INotifyPropertyChanged { 私有小数?我的价值; 公共十进制?我的价值 { 获取 { 返回 myValue; } 放 { ...
现代WPF授权(替换PrincipalPermission属性)
一旦有人开始在net6.0-windows或.net8.0-windows中编写WPF应用程序,他们必须通过哪些方式来实现授权。 切换按钮的 IsVisible 属性或切换 IsEnabled。 重新...
在我的窗口上,我有一个 GroupBox。我想在该 GroupBox 内构建一个水平对齐的表单。水平对齐是指标签和输入位于同一位置的表单...
WPF DataGrid IValueConverter 仅在所选项目更改时触发,而不是在绑定值更改时触发
我已经设置了一个带有“操作”列(组合框)的数据网格。我需要确保我的其他两列的背景和读/写能力根据选择的操作而改变。我
我正在开发一个 WPF C# 程序,我们希望根据其位置对其进行自定义。我将 DI 与 IOptions 一起使用,并且我已经阅读了数十个选项来添加 configBuilder 的特定变体。
如何修复DataGrid滚动条与ColumnHeader相交的空白点?
我正在使用 WPF DataGrid 来显示一些数据,当我有足够的行时,会出现滚动条。在滚动条的顶部,与 DataGrid ColumnHeader 相交的地方,有一个空白方块,我不知道...
我有一个问题。我在 c# wpf 中创建了一个文本框。我给文本框指定了样式。代码是这样的; <question vote="0"> <p>我有一个问题。我在 c# wpf 中创建了一个文本框。我给文本框指定了样式。代码是这样的;</p> <pre><code><Window.Resources> <Style x:Key="txtBoxStyle" TargetType="{x:Type TextBox}"> <Setter Property="Background" Value="White"/> <Setter Property="TextWrapping" Value="Wrap"/> <Setter Property="BorderThickness" Value="2"/> <Setter Property="BorderBrush" Value="Blue"/> <Setter Property="Padding" Value="6 3"/> <Setter Property="FontFamily" Value="Verdane"/> <Setter Property="FontWeight" Value="Bold"/> <Setter Property="FontSize" Value="12"/> <Setter Property="Foreground" Value="Black"/> <Setter Property="Cursor" Value="IBeam"/> <Setter Property="HorizontalContentAlignment" Value="Left"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TextBox"> <Border x:Name="border" Background="Transparent" Focusable="True" BorderThickness="1" BorderBrush="Black" CornerRadius="5" SnapsToDevicePixels="True" Cursor="IBeam"/> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="BorderBrush" TargetName="border" Value="Blue"/> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="BorderBrush" TargetName="border" Value="Blue"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> <Grid> <StackPanel> <TextBox Name="txt_1" Height="100" Width="100" Style="{DynamicResource txtBoxStyle}" FontWeight="Bold" Panel.ZIndex="5" /> <Button x:Name="btn_Tikla" Width="100" Height="100" Background="Blue" Click="btn_Tikla_Click"/> </StackPanel> </Grid> </code></pre> <p>当我运行应用程序并想要输入数据时,会写入文本但不会出现。 我可以创建一个按钮并在消息框对象中查看文本是否已写入。 据我了解,我需要在我创建的边框和文本框之间创建交互。我尝试了文本颜色和背景颜色等组合,但没有得到任何结果。如果有人能提供帮助,我将非常高兴。在文本框中给出我自己的风格。</p> </question> <answer tick="false" vote="0"> <p>为 TextBox 创建自定义样式时,需要确保它包含用于显示文本的组件。您当前的设计有边框,但缺少文本内容区域。要解决此问题,请在 ControlTemplate 的 Border 内添加 ScrollViewer。此 ScrollViewer 将充当文本区域。</p> <pre><code><Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TextBox"> <Border x:Name="border" Background="Transparent" Focusable="True" BorderThickness="1" BorderBrush="Black" CornerRadius="5" SnapsToDevicePixels="True" Cursor="IBeam"> <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="BorderBrush" TargetName="border" Value="Blue"/> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="BorderBrush" TargetName="border" Value="Blue"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </code></pre> </answer> </body></html>
Win7 组件上的 TLS/SSL RestSharp 突然失败
我正在运行 C# WPF net Framework 4.7.2 应用程序,该应用程序已在 1200 台计算机上运行了大约 18 个月。 就在今天早上,我接到了支持电话,因为许多计算机无法加载我们的应用程序。 在
错误 CS2012:无法打开 <executable path> 访问 <executable path denied>
我正在 Visual Studio 2015 中开发 WPF 应用程序,一切都很顺利,直到意外地构建让我出现 CS2012 错误,通知我它无法访问/更新 /Debug 中的可执行文件
我有一个带有 WPF 客户端和 ASP.NET 后端的 VS 2022 解决方案,当我在后端 Web 服务中放置断点时,它们会显示带有消息的黄色标签: 目前不会命中断点...
对不起我的英语。 我正在为一家公司创建 ERP 应用程序。起初我使用 winForms,但后来我看到了 wpf 设计的视频,并将我的项目更改为 WPF。我正在尝试创建登录胜利...
我如何使用 contains 而不是 StartsWith 来实现我的 Combobox TextSearch 我如何使用 contains 而不是 StartsWith 来实现我的组合框文本搜索 <rf:ComboBox Grid.Row="1" Grid.Column="5" Width="200" ItemsSource="{Binding Source={StaticResource AccountProvider}}" DisplayMemberPath="Description" SelectedValuePath="IndRekId" IsEmptyItemVisible="True" SelectedValue="{Binding Id, UpdateSourceTrigger=PropertyChanged}" IsTextSearchEnabled="True" TextSearch.TextPath="Description" IsEditable="True"/> 搜索功能可以工作,但我需要匹配子字符串 这里我有一个MVVM框架的例子。 我的xaml文件: <ComboBox Name="cmbContains" IsEditable="True" IsTextSearchEnabled="false" ItemsSource="{Binding pData}" DisplayMemberPath="wTitle" Text="{Binding SearchText ,Mode=TwoWay}" > <ComboBox.Triggers> <EventTrigger RoutedEvent="TextBoxBase.TextChanged"> <BeginStoryboard> <Storyboard> <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsDropDownOpen"> <DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:0"/> </BooleanAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </EventTrigger> </ComboBox.Triggers> </ComboBox> 我的cs文件: //ItemsSource - pData //There is a string attribute - wTitle included in the fooClass (DisplayMemberPath) private ObservableCollection<fooClass> __pData; public ObservableCollection<fooClass> pData { get { return __pData; } set { Set(() => pData, ref __pData, value); RaisePropertyChanged("pData"); } } private string _SearchText; public string SearchText { get { return this._SearchText; } set { this._SearchText = value; RaisePropertyChanged("SearchText"); //Update your ItemsSource here with Linq pData = new ObservableCollection<fooClass>{pData.ToList().Where(.....)}; } } 您可以看到可编辑的组合框绑定到字符串(SearchText) 一旦发生 TextChanged 事件,就会显示下拉菜单,并且双向绑定会更新值。 当进入 set{} 时,cs 文件中的 ItemsSource 发生了变化;语法。 https://gist.github.com/tonywump/82e66abaf71f715c4bd45a82fce14d80 这个示例看起来像“TextSearch” 在 XAML 文件中,您应该只向组合框“TextContainSearch.Text”添加一个属性: <ComboBox ItemsSource="{Binding Model.formListIntDeviceNumbers}" SelectedItem="{Binding Path=Model.selectedDeviceNumber, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="DeviceNumber" IsEditable="True" c:TextContainSearch.Text="DeviceNumber"> 我们应该在 XAML 文件的标头中添加 using : xmlns:c="clr-namespace:Adaptive.Controls.Extension" *.cs 文件中的 C# 代码: using System; using System.Windows; using System.Windows.Controls; namespace Adaptive.Controls.Extension { public sealed class TextContainSearch : DependencyObject { public static void SetText(DependencyObject element, string text) { var controlSearch = element as Control; if (controlSearch != null) controlSearch.KeyUp += (sender, e) => { if (sender is ComboBox){ var control = sender as ComboBox; control.IsDropDownOpen = true; var oldText = control.Text; foreach(var itemFromSource in control.ItemsSource){ if (itemFromSource != null) { Object simpleType = itemFromSource.GetType().GetProperty(text).GetValue(itemFromSource, null); String propertOfList = simpleType as string; if (!string.IsNullOrEmpty(propertOfList) && propertOfList.Contains(control.Text)) { control.SelectedItem = itemFromSource; control.Items.MoveCurrentTo(itemFromSource); break; } } } control.Text = oldText; TextBox txt = control.Template.FindName("PART_EditableTextBox", control) as TextBox; if (txt != null) { txt.Select(txt.Text.Length, 0); } } }; } } } 试试这个: <ComboBox Padding="3,5" MinWidth="150" SelectedItem="{Binding NewBoxRequest}" ItemsSource="{Binding Requests}" DisplayMemberPath="SN" IsEditable="True" StaysOpenOnEdit="True" Text="{Binding SnFilter,UpdateSourceTrigger=PropertyChanged}"> </ComboBox> 查看型号: private string snFilter; public string SnFilter { get { return snFilter; } set { snFilter = value; RaisePropertyChanged(); RaisePropertyChanged(nameof(Requests)); } } private List<Request> requests; public List<Request> Requests { get => string.IsNullOrEmpty(SnFilter) || requests.Any(r => r.SN == SnFilter) ? requests : requests.Where(r => r.SN.Contains(SnFilter)).ToList(); set { requests = value; RaisePropertyChanged(); } } 无法用 string.Contains() 替换 string.StartsWith()。您必须编写自定义组合框。 这篇文章可能会帮助您: http://www.codeproject.com/Tips/631196/ComboBox-with-Suggest-Ability-based-on-Substring-S 我无法让“Set”语法在我的 C# 系统中工作,所以这里是对上面 Wu 的答案的一个小起飞(这是在自定义控件中): <ComboBox IsEditable="True" IsTextSearchEnabled="false" ItemsSource="{Binding pData, RelativeSource = {RelativeSource TemplatedParent}}" DisplayMemberPath="description" Text="{Binding SearchText , RelativeSource = {RelativeSource TemplatedParent}, Mode=TwoWay}" > <ComboBox.Triggers> <EventTrigger RoutedEvent="TextBoxBase.TextChanged"> <BeginStoryboard> <Storyboard> <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsDropDownOpen"> <DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:0"/> </BooleanAnimationUsingKeyFrames> </Storyboard> </BeginStoryboard> </EventTrigger> </ComboBox.Triggers> </ComboBox> 在自定义控件中: private async void _Loaded(object sender, RoutedEventArgs e) { var n = await InitializeLabTests; allTests = new ObservableCollection<CommonProcedure>(n); pData = new ObservableCollection<CommonProcedure>(n); } //ItemsSource - pData //There is a string attribute - wTitle included in the fooClass (DisplayMemberPath) private ObservableCollection<CommonProcedure> __pData; public ObservableCollection<CommonProcedure> pData { get { return __pData; } set { __pData = value; RaisePropertyChanged(); } } private string _SearchText; public string SearchText { get { return _SearchText; } set { _SearchText = value; RaisePropertyChanged(); //Update your ItemsSource here with Linq pData = new ObservableCollection<CommonProcedure> ( allTests.Where(q => q.description.Contains(SearchText)) ); } } 唯一显着的区别在于 SearchText 设置器。 ComboBox KeyUp 事件上的动态事件怎么样: <ComboBox DisplayMemberPath="Label" Height="37" Padding="5" SelectedValue="{Binding Client, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding ClientList, UpdateSourceTrigger=PropertyChanged }" IsEditable="True" TextSearch.TextPath="Label" KeyUp="ComboBox_KeyUp" /> 活动: private void ComboBox_KeyUp(object sender, KeyEventArgs e) { var control = sender as ComboBox; if (control == null) { return; } if (control.Tag == null) { control.Tag = control.ItemsSource as List<ComboBoxItemViewModel>; } var filter = control.Text.ToLower(); if (filter.Length == 0) { // If no text, show all items control.ItemsSource = control.Tag as List<ComboBoxItemViewModel>; } else { var dataSource = control.Tag as List<ComboBoxItemViewModel>; if (dataSource == null) return; // Filter items based on the text entered control.ItemsSource = dataSource.Where(item => item.Label.ToLower().Contains(filter)).ToList(); } } //Just replace the List<ComboBoxItemViewModel> with your ViewModel
我是一名学生,试图弄清楚 WPF 是如何工作的。按下按钮后我正在导航到另一个页面,但由于某种原因,当我加载该页面时,屏幕底部有一个白色条。 ...
如何修复 C# 中的 PostAsync 请求,该请求不考虑我的代理?
我正在使用 .NetFramework 4.6.1 开发 WPF .dll,我的服务使用 http 请求来访问我的 azure 功能服务器。我创建了一个界面来更改用户设置并定义用法...
我正在使用隐藏代码在 WPF FlowDocument 中渲染表格。但是,我一直无法找到一个示例来说明如何使表格仅使用基于内容所需的空间。而是桌子
当WPF应用程序在后台进程中运行时如何恢复MainWindow
在我的 WPF 应用程序的 App.xaml.cs 中,我有一个覆盖函数来启动应用程序。当应用程序启动时,它首先会检查是否有另一个实例正在运行。如果是这样,第二个实例将关闭。该...
我正在开发一个 Visual Studio 扩展,使用 CrispImage UIElement 和此处的名字功能。然而,尽管在运行时显示,但它们在设计时并不显示。还在