2010-11-11 86 views
0

我有名单,在我的数据类项目奇怪的问题:Silverlight。与结合

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> 

而我在这段代码背后有奇怪的逻辑。

My NodesFromDatabase属性在get语句中触发,但控制节点设置语句不会触发!我在做什么错了?

回答

3

在XAML中设置的依赖属性可以绕过CLR包装。如果您想知道属性何时更改,您应该在属性元数据中创建属性更改的回调。