检查数据网格的元数据是否已更改



我目前正在使用此方法在数据网格列上设置可见性属性:

这是在 XAML 中.cs

DataGrid.DataContextProperty.OverrideMetadata(typeof(DataGrid),
    new FrameworkPropertyMetadata (null, 
        FrameworkPropertyMetadataOptions.Inherits,
        new PropertyChangedCallback(OnDataContextChanged)));

但是我需要检查以确保它尚未更改,否则它将引发异常。下面是我尝试过的一个例子。

if (DataGrid.DataContextProperty.GetMetadata(typeof(DataGrid)) == 
    DataGrid.DataContextProperty.DefaultMetadata) // didn't work 

任何帮助将不胜感激。

我想

说的是,重写现有类型(代码未声明的类,而是 WPF 框架的一部分)的属性元数据是非法的。

调用DataContextProperty.OverrideMetadata(typeof(DataGrid), ...)只是偶然起作用,因为类 DataGrid 尚未覆盖 FrameworkElement.DataContext 属性的元数据。但是您不能对此做出任何假设,MS 可能会决定在 WPF 的未来版本中更改此设置。

您必须在静态类构造函数中创建一个派生类并重写元数据,如 OverrideMetadata的 MSDN 文档中所示:

class MyDataGrid : DataGrid
{
    static MyDataGrid()
    {
        DataGrid.DataContextProperty.OverrideMetadata(typeof(MyDataGrid),
            new FrameworkPropertyMetadata(null, 
                FrameworkPropertyMetadataOptions.Inherits,
                new PropertyChangedCallback(OnDataContextChanged)));
    }
}

相关内容

  • 没有找到相关文章

最新更新