【问题标题】:Binding Dependency Properties绑定依赖属性
【发布时间】:2010-07-20 17:47:37
【问题描述】:

所以我来创建一个用户控件。它由一个从组合框中下拉的树视图组成。

实际上,有一个带有控件(DropTree)的按钮从其上下文菜单中下拉。所以我有一个控件 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:顺便说一句,我以后需要在我的代码中为 ComboTreeView 使用 DataBinding。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-01-22
        • 2012-11-08
        • 2012-08-01
        • 1970-01-01
        • 2014-08-31
        • 2012-09-28
        • 2017-12-24
        • 2023-03-26
        • 2018-05-21
        相关资源
        最近更新 更多