wpf 相关问题

Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。

使用 DisplayMemberPath 时 WPF 中的 ListBox 绑定到什么 PropertyName?

我正在学习如何构建更复杂的数据结构,以及如何在 WPF 中绑定它们。鉴于下面的数据结构,我不知道如何调用 OnPropertyChanged() 以便 ListBox 更新...

回答 1 投票 0

WPF MVVM 导航视图。问题继续创建视图实例

我想要实现的是,当我点击按钮时,视图切换。 但是,每当切换 Viewmodel 时,View Instance 都会继续创建。 我只想创建和重用视图

回答 1 投票 0

WPF。 C#。 DataGrid 和自定义排序

如何对名为“评论”的列中的值进行自定义排序? 列中的值将包含以“.”结尾的前缀。和索引号。所以,例如,在细胞中...

回答 1 投票 0

如何在 Windows 10 中打开显示设置(以编程方式,特别是使用 C#)?

我正在尝试使用 C# 在 Windows 10 中打开/启动显示。 我已经尝试过这个: Process.Start("explorer.exe", @"shell:::{BB06C0E4-D293-4f75-8A90-CB05B6477EEE}"); 但它打开关于(信息...

回答 4 投票 0

如何解决“没有足够的内存资源来处理此命令”?

我有一个使用串行端口与设备通信的应用程序。 我总是发送命令并接收,但 2/3 小时后我收到我在标题上写的消息。 我已经尝试过...

回答 1 投票 0

选择矩形在滚动期间不随 WPF 数据网格内容移动

我正在尝试在 WPF DataGrid 中复制 Windows 文件资源管理器的选择行为。具体来说,我的目标是实现一个模仿文件资源管理器功能的选择矩形

回答 1 投票 0

为什么在 ValidationRule 的 Validate 函数中,decimal.TryParse(valueString, out valueParsed) 返回 true,给出 1.0.1?

这是我的代码: 使用 System.Windows.Controls; 命名空间 MyTest.validations { 公共类 DecimalValidationRule : ValidationRule { 公共覆盖 ValidationResult 验证(对象...

回答 1 投票 0

为什么无法在文本框中插入小数?

这是我的视图模型: 公共类 ViewModelData :INotifyPropertyChanged { 私有小数?我的价值; 公共十进制?我的价值 { 获取 { 返回 myValue; } 放 { ...

回答 1 投票 0

现代WPF授权(替换PrincipalPermission属性)

一旦有人开始在net6.0-windows或.net8.0-windows中编写WPF应用程序,他们必须通过哪些方式来实现授权。 切换按钮的 IsVisible 属性或切换 IsEnabled。 重新...

回答 1 投票 0

如何使用 WPF XAML 构建堆叠表单?

在我的窗口上,我有一个 GroupBox。我想在该 GroupBox 内构建一个水平对齐的表单。水平对齐是指标签和输入位于同一位置的表单...

回答 4 投票 0

WPF DataGrid IValueConverter 仅在所选项目更改时触发,而不是在绑定值更改时触发

我已经设置了一个带有“操作”列(组合框)的数据网格。我需要确保我的其他两列的背景和读/写能力根据选择的操作而改变。我

回答 1 投票 0

我们如何在构建后向应用程序设置添加新部分?

我正在开发一个 WPF C# 程序,我们希望根据其位置对其进行自定义。我将 DI 与 IOptions 一起使用,并且我已经阅读了数十个选项来添加 configBuilder 的特定变体。

回答 1 投票 0

如何修复DataGrid滚动条与ColumnHeader相交的空白点?

我正在使用 WPF DataGrid 来显示一些数据,当我有足够的行时,会出现滚动条。在滚动条的顶部,与 DataGrid ColumnHeader 相交的地方,有一个空白方块,我不知道...

回答 1 投票 0

Wpf 文本框样式

我有一个问题。我在 c# wpf 中创建了一个文本框。我给文本框指定了样式。代码是这样的; <question vote="0"> <p>我有一个问题。我在 c# wpf 中创建了一个文本框。我给文本框指定了样式。代码是这样的;</p> <pre><code>&lt;Window.Resources&gt; &lt;Style x:Key=&#34;txtBoxStyle&#34; TargetType=&#34;{x:Type TextBox}&#34;&gt; &lt;Setter Property=&#34;Background&#34; Value=&#34;White&#34;/&gt; &lt;Setter Property=&#34;TextWrapping&#34; Value=&#34;Wrap&#34;/&gt; &lt;Setter Property=&#34;BorderThickness&#34; Value=&#34;2&#34;/&gt; &lt;Setter Property=&#34;BorderBrush&#34; Value=&#34;Blue&#34;/&gt; &lt;Setter Property=&#34;Padding&#34; Value=&#34;6 3&#34;/&gt; &lt;Setter Property=&#34;FontFamily&#34; Value=&#34;Verdane&#34;/&gt; &lt;Setter Property=&#34;FontWeight&#34; Value=&#34;Bold&#34;/&gt; &lt;Setter Property=&#34;FontSize&#34; Value=&#34;12&#34;/&gt; &lt;Setter Property=&#34;Foreground&#34; Value=&#34;Black&#34;/&gt; &lt;Setter Property=&#34;Cursor&#34; Value=&#34;IBeam&#34;/&gt; &lt;Setter Property=&#34;HorizontalContentAlignment&#34; Value=&#34;Left&#34;/&gt; &lt;Setter Property=&#34;VerticalContentAlignment&#34; Value=&#34;Center&#34;/&gt; &lt;Setter Property=&#34;Template&#34;&gt; &lt;Setter.Value&gt; &lt;ControlTemplate TargetType=&#34;TextBox&#34;&gt; &lt;Border x:Name=&#34;border&#34; Background=&#34;Transparent&#34; Focusable=&#34;True&#34; BorderThickness=&#34;1&#34; BorderBrush=&#34;Black&#34; CornerRadius=&#34;5&#34; SnapsToDevicePixels=&#34;True&#34; Cursor=&#34;IBeam&#34;/&gt; &lt;ControlTemplate.Triggers&gt; &lt;Trigger Property=&#34;IsMouseOver&#34; Value=&#34;True&#34;&gt; &lt;Setter Property=&#34;BorderBrush&#34; TargetName=&#34;border&#34; Value=&#34;Blue&#34;/&gt; &lt;/Trigger&gt; &lt;Trigger Property=&#34;IsMouseOver&#34; Value=&#34;True&#34;&gt; &lt;Setter Property=&#34;BorderBrush&#34; TargetName=&#34;border&#34; Value=&#34;Blue&#34;/&gt; &lt;/Trigger&gt; &lt;/ControlTemplate.Triggers&gt; &lt;/ControlTemplate&gt; &lt;/Setter.Value&gt; &lt;/Setter&gt; &lt;/Style&gt; &lt;/Window.Resources&gt; &lt;Grid&gt; &lt;StackPanel&gt; &lt;TextBox Name=&#34;txt_1&#34; Height=&#34;100&#34; Width=&#34;100&#34; Style=&#34;{DynamicResource txtBoxStyle}&#34; FontWeight=&#34;Bold&#34; Panel.ZIndex=&#34;5&#34; /&gt; &lt;Button x:Name=&#34;btn_Tikla&#34; Width=&#34;100&#34; Height=&#34;100&#34; Background=&#34;Blue&#34; Click=&#34;btn_Tikla_Click&#34;/&gt; &lt;/StackPanel&gt; &lt;/Grid&gt; </code></pre> <p>当我运行应用程序并想要输入数据时,会写入文本但不会出现。 我可以创建一个按钮并在消息框对象中查看文本是否已写入。 据我了解,我需要在我创建的边框和文本框之间创建交互。我尝试了文本颜色和背景颜色等组合,但没有得到任何结果。如果有人能提供帮助,我将非常高兴。在文本框中给出我自己的风格。</p> </question> <answer tick="false" vote="0"> <p>为 TextBox 创建自定义样式时,需要确保它包含用于显示文本的组件。您当前的设计有边框,但缺少文本内容区域。要解决此问题,请在 ControlTemplate 的 Border 内添加 ScrollViewer。此 ScrollViewer 将充当文本区域。</p> <pre><code>&lt;Setter Property=&#34;Template&#34;&gt; &lt;Setter.Value&gt; &lt;ControlTemplate TargetType=&#34;TextBox&#34;&gt; &lt;Border x:Name=&#34;border&#34; Background=&#34;Transparent&#34; Focusable=&#34;True&#34; BorderThickness=&#34;1&#34; BorderBrush=&#34;Black&#34; CornerRadius=&#34;5&#34; SnapsToDevicePixels=&#34;True&#34; Cursor=&#34;IBeam&#34;&gt; &lt;ScrollViewer x:Name=&#34;PART_ContentHost&#34; Focusable=&#34;false&#34; HorizontalScrollBarVisibility=&#34;Hidden&#34; VerticalScrollBarVisibility=&#34;Hidden&#34;/&gt; &lt;/Border&gt; &lt;ControlTemplate.Triggers&gt; &lt;Trigger Property=&#34;IsMouseOver&#34; Value=&#34;True&#34;&gt; &lt;Setter Property=&#34;BorderBrush&#34; TargetName=&#34;border&#34; Value=&#34;Blue&#34;/&gt; &lt;/Trigger&gt; &lt;Trigger Property=&#34;IsMouseOver&#34; Value=&#34;True&#34;&gt; &lt;Setter Property=&#34;BorderBrush&#34; TargetName=&#34;border&#34; Value=&#34;Blue&#34;/&gt; &lt;/Trigger&gt; &lt;/ControlTemplate.Triggers&gt; &lt;/ControlTemplate&gt; &lt;/Setter.Value&gt; &lt;/Setter&gt; </code></pre> </answer> </body></html>

回答 0 投票 0

Win7 组件上的 TLS/SSL RestSharp 突然失败

我正在运行 C# WPF net Framework 4.7.2 应用程序,该应用程序已在 1200 台计算机上运行了大约 18 个月。 就在今天早上,我接到了支持电话,因为许多计算机无法加载我们的应用程序。 在

回答 1 投票 0

错误 CS2012:无法打开 <executable path> 访问 <executable path denied>

我正在 Visual Studio 2015 中开发 WPF 应用程序,一切都很顺利,直到意外地构建让我出现 CS2012 错误,通知我它无法访问/更新 /Debug 中的可执行文件

回答 6 投票 0

VS 2022:目前不会命中断点。该文档尚未加载任何符号

我有一个带有 WPF 客户端和 ASP.NET 后端的 VS 2022 解决方案,当我在后端 Web 服务中放置断点时,它们会显示带有消息的黄色标签: 目前不会命中断点...

回答 2 投票 0

尝试创建背景亚克力模糊效果时如何修复黑屏?

对不起我的英语。 我正在为一家公司创建 ERP 应用程序。起初我使用 winForms,但后来我看到了 wpf 设计的视频,并将我的项目更改为 WPF。我正在尝试创建登录胜利...

回答 1 投票 0

带有 contains 的 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

回答 6 投票 0

在 WPF 上浏览页面时出现白条

我是一名学生,试图弄清楚 WPF 是如何工作的。按下按钮后我正在导航到另一个页面,但由于某种原因,当我加载该页面时,屏幕底部有一个白色条。 ...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.