我的数据类中包含项目列表:
public ObservableCollection<Node> NodesFromDatabase
{
get
{
if (_nodesFromDatabase == null)
_nodesFromDatabase =GenerateMenuNodes();
return _nodesFromDatabase ;
}
set
{
_nodesFromDatabase = value;
}
}
我希望绑定此数据的控件中的属性:
public ObservableCollection<Node> Nodes
{
get { return (ObservableCollection<Node>)GetValue(NodesProperty); }
set
{
SetValue(NodesProperty, value);
}
}
private static DependencyProperty NodesProperty =
DependencyProperty.Register(
"Nodes",
typeof(ObservableCollection<Node>),
typeof(Control),new PropertyMetadata(new ObservableCollection<Node>()));
在xaml我有这样的代码:
<Grid Background="White">
<Grid.DataContext>
<local:DataFromDataBase x:Name="database" />
</Grid.DataContext>
<local:Control Nodes="{Binding NodesFromDatabase}" />
</Grid>
我在这段代码背后有一些奇怪的逻辑。
我的NodesFromDatabase属性在get语句中被触发,但是控制Nodes set语句没有被触发!我做错了什么?
答案 0 :(得分:3)
在XAML中设置的依赖项属性可以绕过CLR包装器。如果要知道属性何时更改,则应在属性元数据中创建属性更改的回调。