2010-07-20 203 views
0

所以在這裏我來創建一個用戶控件。它包含一個從組合框下降的樹形視圖。綁定依賴屬性

實際上,有一個控件(DropTree)從其上下文菜單下拉按鈕。所以我有一個控制DropTree。

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

    public DropTree() 
    { InitializeComponent(); } 
} 

爲了簡化它,我把TreeView控件公開了,然後我有我的主要控件叫做ComboTreeView。

現在我需要它來代表的一些樹視圖屬性,所以我定義了幾個依賴屬性:

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。

回答

0

嘗試在SelectedValue而不是SelectedItem上設置綁定。

0

TreeView.SelectedItem是隻讀屬性。無論是明確還是通過綁定,您都無法設置它。爲了選擇TreeView中的節點,必須將TreeViewItem.IsSelected屬性設置爲true。