【发布时间】: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