绑定依赖属性

时间:2010-07-20 17:47:37

标签: c# wpf data-binding user-controls

所以我来创建一个用户控件。它包括从组合框中掉落的树视图。

实际上,有一个控件(DropTree)从其contextmenu下拉的按钮。所以我有一个控件DropTree。

public partial class DropTree : UserControl
{
    public TreeView TreeView 
    { get{return treeView;} }

    public DropTree()
    { InitializeComponent(); }
}

为了简化它,我将TreeView控件公之于众,然后我有了一个名为ComboTreeView的主控件。

现在我需要在其中表示一些treeview属性,因此我定义了几个依赖属性:

    public static DependencyProperty SelectedItemProperty = DependencyProperty.Register("SelectedItem", typeof(object), typeof(ComboTreeView), new FrameworkPropertyMetadata { Inherits = true, IsNotDataBindable = false, DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged });

    public object SelectedItem
    {
        get { return GetValue(SelectedItemProperty); }
        set { SetValue(SelectedItemProperty, value); }
    }

在构造函数中是:

public ComboTreeView()
{
            InitializeComponent();
            TreeViewControl.SetBinding(TreeView.SelectedItemProperty, new Binding("SelectedItem") { Source = this, Mode = BindingMode.TwoWay });
}

这一切似乎没问题,直到我运行它。它崩溃说SelectedItem无法绑定到数据。我不明白?

对于ItemsSource和SelectedValue也是如此......但只有这样定义的SelectedValuePath属性才行。

有人可以帮忙吗?或者还有其他方法可以正确绑定它吗?

PS:顺便说一下,我需要在以后的代码中使用DataBinding for ComboTreeView。

2 个答案:

答案 0 :(得分:0)

尝试在SelectedValue上设置Binding而不是SelectedItem。

答案 1 :(得分:0)

TreeView.SelectedItem是一个只读属性。无论是显式还是通过绑定,都无法设置它。要在TreeView中选择节点,必须将TreeViewItem.IsSelected属性设置为true。