我如何使一个常量字符串可用于我的代码和DataGrid

本文关键字:我的 用于 代码 DataGrid 字符串 何使一 常量 | 更新日期: 2023-09-27 18:05:33

我有一个带有DataGrid的窗口。我的DataGrid处理BeginningEdit事件。我想运行一些可能根据列的名称取消BeginningEdit事件的代码。例如:

private void tickerGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e) {
    e.Cancel = (string)e.Column.Header != "Name";
}

我的datagridtemplateccolumn标签看起来像:

<DataGridTemplateColumn Header="Name" IsReadOnly="False">

我想将"Name"作为常量存储在某个地方。我该怎么做呢?我试着做一个公共字符串属性和绑定datagridtemplatecolum列头像这样:

<DataGridTemplateColumn Header="{Binding Path=ColName}" IsReadOnly="False">

但是我认为DataContext是不同的,因为这对我不起作用。

我怎么能使一个常量字符串是可用的,既对我的c#代码和datagridtemplatecolumleheader ?

我如何使一个常量字符串可用于我的代码和DataGrid

试试这个(基于我们之前的讨论)…

Header="{x:Static yourNamespace:Constants.ColName}"

(和Constants.ColName是基于@mathieu的回答-只是定义一个类与静态属性在代码的任何地方-并获得名称空间的权利)

基本上你不需要Binding,因为你所拥有的是一个const字符串,所以最简单的事情就是使用x:Static。(您可以在需要的地方添加类似的属性)。

另一种选择是在XAML中"构造"一个字符串对象,并使用StaticResources来实现。但这似乎更容易——您可以为类似的事情保留一个全局静态类。

创建静态类

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">