Silverlight的。绑定的奇怪问题

时间:2010-11-11 21:23:46

标签: silverlight data-binding binding

我的数据类中包含项目列表:

 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语句没有被触发!我做错了什么?

1 个答案:

答案 0 :(得分:3)

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