2011-09-15 57 views
1

如何使用MVVM在樹視圖中展開節點?如何使用MVVM在Silverlight工具包樹視圖中展開一個節點?

我有一個x級別的treeview,我做了我自己的類來將它綁定到TreeView控件。

當我創建TreeView列表時,我確實設法將IsSelected屬性設置爲true。 所以我只需要我的IsSelected值綁定到TreeViewItemIsSelected屬性,但它不是簡單的在所有...

這裏是我的類:

public class HierarchicalItem : Model 
{ 
    public string Name { get; set; } 
    public int Id { get; set; } 

    private bool _IsSelected; 
    public bool IsSelected 
    { 
     get { return _IsSelected; } 
     set 
     { 
      if (_IsSelected != value) 
      { 
       _IsSelected = value; 
       RaisePropertyChanged("IsSelected"); 
      } 
     } 
    } 

    private ObservableCollection<HierarchicalItem> _children; 
    public ObservableCollection<HierarchicalItem> Children 
    { 
     get 
     { 
      return _children; 
     } 
     set 
     { 
      if (_children != value) 
      { 
       _children = value; 
       RaisePropertyChanged("Children"); 
      } 
     } 
    } 
} 

我試圖與IsSelectedIsExpanded

<controls:TreeView.ItemContainerStyle> 
    <Style TargetType="controls:TreeViewItem"> 
     <Setter Property="IsSelected" Value="{Binding IsSelected}" /> 
    </Style> 
</controls:TreeView.ItemContainerStyle> 

但它返回,即IsSelectedIsExpanded只讀(這部作品在WPF)。

我看了很多解決方案,但沒有爲我工作,因爲我有一個列表框和每個樹視圖中的動態樹視圖,我必須將整個路徑展開到具有給定Id的節點。例如,我想要展開每個樹視圖中ID = 30的所有節點。

回答

0

不幸的是,它是不可能的設置風格制定者綁定在Silverlight 4

一種方法來設置IsExpanded,這誠然是不是所有的漂亮,是設置切換按鈕綁定在TreeViewItem的控制模板。如果你去http://msdn.microsoft.com/en-us/library/dd728671(v=vs.95).aspx你可以得到TreeViewItem的默認控制模板。您可以複製這一點,並替換以下: 與

+0

的Silverlight 5將配備風格制定者,我希望能解決我的問題,現在我只使用一個轉換器,並設置有IsSelected該節點在彩色背景並展開整個樹視圖,然後用戶必須找到節點... – Rumplin

相關問題