我正在使用WPF并且我有一个自定义数据网格。我想要做的是添加一个属性(CustomGridCommands)到该网格,我可以从任何视图在xaml中设置。
我目前所拥有的内容如下(我稍微更改了代码以简化它):
自定义网格C#代码:
public class CustomWPFDataGrid : DataGrid, INotifyPropertyChanged
{
public static readonly DependencyProperty CustomContextMenuCommandsProperty =
DependencyProperty.Register("CustomContextMenuCommands",
typeof (ObservableCollection<WPFBaseCommand>),
typeof (CustomWPFDataGrid));
[Bindable(true)]
public ObservableCollection<WPFBaseCommand> CustomContextMenuCommands
{
get { return (ObservableCollection<WPFBaseCommand>) GetValue(CustomContextMenuCommandsProperty); }
set { SetValue(CustomContextMenuCommandsProperty, value); }
}
...
...
}
XAML代码:
<common:CustomWPFDataGrid
ItemsSource="{Binding Path=ItemList}"
CustomContextMenuCommands="{Binding Path=CustomGridCommands, Mode=TwoWay}">
....
</common:CustomWPFDataGrid >
我绑定到包含网格的视图的对象如下:
public class TestViewModel
{
public ObservableCollection<TestDisplayViewModel> ItemList { get; set; }
public ObservableCollection<WPFBaseCommand> CustomGridCommands;
public TestViewModel()
{
... population of objects here
}
当我运行它并检查datagrid中的属性值(CustomContextMenuCommands)时,它始终为null。
任何想法我做错了什么?
永远不会命中“CustomContextMenuCommands”的setter。
答案 0 :(得分:0)
CustomGridCommands
是一个字段,View无法使用它。如果您将其设为公共财产,那么它将变得可访问。有关可用作绑定源的更多详细信息,请参见MSDN - Binding Sources。
如果使用WPF 4.5,静态属性也可用于绑定,如release notes中所述。