问题使用MVVMLight将命令绑定到TreeViewItem

时间:2011-02-23 16:08:42

标签: mvvm binding command mvvm-light treeviewitem

我正在尝试使用MVVMLight将TreeViewItem Selected事件绑定到命令。

TreeViewItem是在HierarchicalDataTemplate中定义的,因此我无法添加Interaction.Triggers(如下所示)

<HierarchicalDataTemplate 
            x:Key="TreeViewItemTemplate"
            ItemsSource="{Binding ChildReportViewModels}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Selected">
                    <MvvmLight_Command:EventToCommand Command="{Binding LoadReportCommand, Mode=OneWay}" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
</HierarchicalDataTemplate>

我还可以将EventTrigger添加到每个TreeViewItem吗?

感谢。

2 个答案:

答案 0 :(得分:2)

我忘记了这个问题。

对于未来的参考,这是我使用的解决方案......

而不是尝试将EventToCommand绑定到TreeView的Selected事件, 我将它绑定到TreeViewItems的HierarchicalDataTemplate中声明的TextBlock的MouseLeftButtonUpEvent。

<HierarchicalDataTemplate 
   x:Key="TreeViewItemTemplate"
   ItemsSource="{Binding ChildReportViewModels}"
   ItemContainerStyle="{StaticResource TreeViewItemContainerStyle}">
   <StackPanel Orientation="Horizontal">        
      <TextBlock Text="{Binding Name}">
         <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseLeftButtonUp">
               <gs_cmd:EventToCommand Command="{Binding LoadPublicationCommand, Mode=OneWay}" CommandParameter="{Binding}" />
            </i:EventTrigger>
         </i:Interaction.Triggers>
      </TextBlock>
   </StackPanel>
</HierarchicalDataTemplate>

答案 1 :(得分:0)

我对MVVMLight知之甚少,特别是关于EventTrigger。

但由于您的问题没有答案,但codeplex文章TreeViewWithViewModel可能有所帮助。它显示了如何在wpf-treeview中绑定到SelectedItem和IsExpanded属性,以及如何使用这些属性在树视图中实现按需加载。