2017-03-02 61 views
-2
樹狀元素,碼上

「TreeViewItem.Expanded」事件是這樣的:[WPF];擴展事件有關的TreeView在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> 

它不工作。

這裏是我的視圖模型

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

感謝
Raghava

+0

你能詳細說明你的要求嗎? – Sivasubramanian

回答

0

如果你的要求是獲得視圖模型的IsExpanded項目,那麼你就可以綁定TreeViewItem的IsExpanded到屬性在視圖模型中。

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

視圖模型代碼:

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.需要Message.Attach。看到你想要捕捉的事件。請記住,那些方法的簽名需要精確,否則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> 

我的建議是,首先創建視圖的代碼隱藏這些方法與在屬性窗口事件雙擊。然後在你的視圖模型中複製這個方法,你可以省略某些東西,但爲了它的工作,它必須按照我的指示進行連接。

Morgan。