2011-09-15 12 views
1

MVVMを使用してツリービュー内のノードを拡張するにはどうすればよいですか?MVVMを使用してSilverlightツールキットツリービューで1ノードを拡張する方法は?

私はxレベルのツリービューを持っていて、それをTreeViewコントロールにバインドする独自のクラスを作成しました。

TreeViewリストを作成すると、IsSelectedプロパティをtrueに設定することができました。 は、だから私はちょうどTreeViewItemIsSelectedプロパティに私のIsSelected値をバインドする必要がありますが、それがすべてでそれほど単純ではありません...ここで

は私のクラスである:

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 = 30のすべてのノードを展開したいとします。

答えて

0

残念ながら、確かにかなり、ツリービューアイテムの中にトグルボタンを拘束を設定することになるすべてではありませんisExpandedとしては、設定するためにSilverlightで4

一つの方法を、スタイルセッターのバインディングを設定することはできません制御テンプレート。 http://msdn.microsoft.com/en-us/library/dd728671(v=vs.95).aspxに行くと、TreeViewItemの既定のコントロールテンプレートを取得できます。あなたはこれをコピーして、次のように置き換えることができます:

+0

のSilverlight 5は、今の私はちょうどコンバータを使用し、IsSelectedたそのノード上の色付きの背景を設定し、私はそれが私の問題を解決することを願って、スタイルのセッターが付属していますツリービュー全体を展開すると、ユーザーはノードを見つけなければなりません... – Rumplin

関連する問題