2017-03-02 7 views
-2
でTreeViewコントロールのために拡大イベント

ツリービューの要素の「TreeViewItem.Expanded」イベント、このようなコード:[WPF]; Caliburn.Micro

<TreeView ItemsSource="{Binding Nodes}" 
     [Event TreeViewItem.Expanded]=[Action Expanded($this)]; 
     [Event TreeViewItem.Collapsed]=[Action Collapsed($dataContext)]"> 
<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding Nodes}"> 
     ... 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate></TreeView> 

それは働いていません。ここで

私のViewModelは

public class MyViewModel{ 
....... 
public void Expanded(Nodes node) 
{ 
.......... 
} 
} 

おかげで、
Raghava

+0

要件を詳しく説明できますか? – Sivasubramanian

答えて

0

あなたの条件は、ビューモデルにisExpandedとしてアイテムを取得することである場合は、プロパティにツリービューアイテムのisExpandedとしてバインドすることができますビューモデルで

<Style TargetType="{x:Type TreeViewItem}"> 
    <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 
    <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/> 
</Style> 

のViewModelコード:

public class ViewModel 
{ 

    private bool isExpanded; 
    public bool IsExpanded 
    { 
     get 
     { 
      return isExpanded; 
     } 
     set 
     { 
      isExpanded = value; 
      MessageBox.Show("IsExpanded changed"); 
     } 
    } 
} 
+0

私は尋ねています**イベント**動的にデータを追加するにはcaliburn.micro –

1

まず第一に、あなたが最初の3行の中で最も重要なコードの最大の部分が欠落している...

あなたは私たちを示したコードは、うまくいけばですそれはXAMLのエラーになるからです。 添付のプロパティメッセージ。アタッチはC.M.キャプチャしようとしているイベントを表示します。これらのメソッドのシグネチャが正確である必要があることを覚えておいてください。それ以外の場合、CMはビューモデル内でそれらを見つけられません。

<TreeView ItemsSource="{Binding Nodes}" 
     Message.Attach="[Event TreeViewItem.Expanded]=[Action Expanded($this)]; 
     [Event TreeViewItem.Collapsed]=[Action Collapsed($dataContext)]"> 
<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding Nodes}"> 
     ... 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate></TreeView> 

私の提案は、プロパティウィンドウでそのイベントをダブルクリックして最初のビューの分離コードでこれらのメソッドを作成することです。次に、あなたのビューモデルでメソッドを複製して、特定のものを除外することができますが、それが機能するためには、指定したとおりに配線する必要があります。

モルガン。

関連する問題