WPF 在datagrid和ScrollViewer的滚动条上右键发现弹出的选项全是英文,怎么改成汉语?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 在datagrid和ScrollViewer的滚动条上右键发现弹出的选项全是英文,怎么改成汉语?相关的知识,希望对你有一定的参考价值。

WPF 在datagrid和ScrollViewer的滚动条上右键发现弹出的选项全是英文,怎么改成汉语?
或者禁用鼠标右键弹出的选项。怎么做?
我是说在datagrid和ScrollViewer出现的滚动条上单击右键弹出来的菜单是英文的,怎么把他变成汉语

参考技术A <Style TargetType="ContextMenu">
<Setter Property="Visibility" Value="Collapsed"></Setter>
</Style>
嘿嘿,就可以禁用鼠标右键弹出的菜单了

在 WPF 中使用 DataTable 和 DataGrid 时发生 System.Windows.Data 错误

【中文标题】在 WPF 中使用 DataTable 和 DataGrid 时发生 System.Windows.Data 错误【英文标题】:When using DataTable and DataGrid in WPF System.Windows.Data Error occurs 【发布时间】:2011-05-12 02:27:02 【问题描述】:

我使用 WPFToolkit 的 DataGrid 来显示一些数据。

DataTable 在 myfile.xaml.cs 中被初始化为

myTable = new DataTable();
DataColumn col;
col = new DataColumn();
col.DataType = System.Type.GetType("System.Int64");
col.ColumnName = "ID";
col.ReadOnly = true;
col.Unique = false;
myTable.Columns.Add(col);

col = new DataColumn();
col.DataType = System.Type.GetType("System.String");
col.ColumnName = "Name";
col.ReadOnly = true;
col.Unique = false;
myTable.Columns.Add(col);

等等。

按照这里的建议,我使用

myGrid.ItemsSource = myTable.DefaultView;

在 myfile.xaml.cs 中。

在 myfile.xaml 我只定义了

<my:DataGrid Name="myGrid" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"/>

当我使用

向表中添加条目时
DataRow row = myTable.NewRow();
row["ID"] = 123;
row["Name"] = "MyName";

Action action = () => myTable.Rows.Add(row);
Dispatcher.Invoke(action);

条目已正确添加到 GUI 的网格中,但是我收到以下错误:

System.Windows.Data Error: 39 : BindingExpression path error: 'ID' property not found on 'object' ''Object' (HashCode=29890231)'. BindingExpression:Path=ID; DataItem='Object' (HashCode=29890231); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
System.Windows.Data Error: 39 : BindingExpression path error: 'Name' property not found on 'object' ''Object' (HashCode=29890231)'. BindingExpression:Path=Name; DataItem='Object' (HashCode=29890231); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

那么我该如何解决这个错误呢? 有什么提示吗?

谢谢。

【问题讨论】:

FWIW - 我刚刚在 3.5 上“按原样”运行了您的代码,它可以正常工作。也许你有一个损坏的工具包 dll?还是? 好的,感谢您提供的信息。所以也许这只是一个配置问题。 【参考方案1】:

我认为这与您执行代码的顺序有关。尝试改变这个:

DataRow row = myTable.NewRow();
row["ID"] = 123;
row["Name"] = "MyName";

Action action = () => myTable.Rows.Add(row);
Dispatcher.Invoke(action);

进入这个:

DataRow row = myTable.NewRow();
myTable.Rows.Add(row);
row["ID"] = 123;
row["Name"] = "MyName";

即:在将项目添加到行之前,将行添加到数据表中

【讨论】:

不幸的是,更改订单并没有帮助。而且我必须保留 Action 和 Dispatcher,因为这段代码不是由主(GUI)线程调用的 嗯 kein glück... 我去看看。不过我有一个问题,您为什么使用工具包的 DataGrid 而不是 4.0 框架中包含的那个? 问题:您的 DataGridColumns 是如何创建的?手动或通过 autogenerateColumns ? 我已将您的代码复制到一个小型测试项目中,我不得不尝试解决您的错误,但未能重现它。由我,该行被添加而没有错误。与您的唯一区别:我使用的是 4.0(所以不是工具包 dataGrid),但我不认为这是 pb,而且我使用的是同一个线程来显示(所以 Dispatcher.Invoke 不会做任何差异),这实际上可能是铅。所以我并没有真正的解决方案,但我认为你应该查看你的线程以找到罪魁祸首 Microsoft 为 4.0 修复了一个类似的错误,也许这就是为什么 4.0 不会出现此错误的原因(请参阅connect.microsoft.com/VisualStudio/feedback/details/484240/…)

以上是关于WPF 在datagrid和ScrollViewer的滚动条上右键发现弹出的选项全是英文,怎么改成汉语?的主要内容,如果未能解决你的问题,请参考以下文章

wpf datagrid 默认选择为最新的一行,不知道为啥设置不了

WPF中ListView和DataGrid的区别?

.NET 4 WPF Datagrid 和 WPF Toolkit Datagrid 之间的差异

在wpf中怎么获取datagrid某行某列的值啊?急!跪求!

wpf datagrid怎么得到第一项焦点?然后在方向键上下移动

wpf datagrid cell 设置焦点