我有一个带有DataGrid的Window。我的DataGrid处理BeginningEdit事件。我想运行一些代码,可能会根据列的名称取消BeginningEdit事件。例如:
private void tickerGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e) {
e.Cancel = (string)e.Column.Header != "Name";
}
我的DataGridTemplateColumn标记如下所示:
<DataGridTemplateColumn Header="Name" IsReadOnly="False">
我想存储&#34;姓名&#34;作为某个地方的常数。我怎样才能做到这一点?我尝试制作一个公共String属性并绑定DataGridTemplateColumn Header,如下所示:
<DataGridTemplateColumn Header="{Binding Path=ColName}" IsReadOnly="False">
但我认为DataContext是不同的,因为这对我没用。
如何创建一个可用于我的C#代码和DataGridTemplateColumn标头的常量字符串?
答案 0 :(得分:1)
创建一个静态类
public static class Constants
{
public const string ColName = "ColName";
}
在xaml文件的顶部添加命名空间引用:
xmlns:customNamespace="clr-namespace:Namespace.Of.Your.Constants.Class"
添加你的绑定:
<DataGridTemplateColumn Header="{Binding Path=ColName, Source={x:Static customNamespace:Constants}" IsReadOnly="False">
答案 1 :(得分:1)
试试这个(根据我们之前的讨论发布)......
Header="{x:Static yourNamespace:Constants.ColName}"
(并且Constants.ColName
基于@mathieu的回答 - 只需在代码中的任何位置定义一个具有静态属性的类 - 并使命名空间正确)
基本上你不需要Binding
,因为你拥有的是一个const字符串,所以最简单的事情就是使用x:Static
。 (并且您可以根据需要添加类似的属性)。
替代方案也是在某个地方“构造”XAML中的字符串对象,并使用StaticResources
。但这似乎更容易 - 你可以为类似的东西保留一个全局静态类。