WPF MVVM - 在TreeViewItem中触发事件的最正确方法是什么

时间:2011-02-24 17:30:22

标签: wpf events mvvm treeview treeviewitem

我目前正在使用此扩展来设置处理ViewModel中数据的特定事件...示例:

<swi:Interaction.Triggers>
    <swi:EventTrigger EventName="Click">
        <esi:CallDataMethod Method="SaveRevision_Clicked"/>
    </swi:EventTrigger>
</swi:Interaction.Triggers>

esi和swi在哪里:

xmlns:esi="clr-namespace:Expression.Samples.Interactivity;assembly=Expression.Samples.Interactivity"
xmlns:swi="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

但是我想为TreeViewItem设置一个事件?我没有直接访问它们,是吗?

编辑:我实际上正在使用ItemContainerStyle,

<Style x:Key="FolderView" TargetType="{x:Type TreeViewItem}">
    <Setter Property="HeaderTemplate">
        <Setter.Value>
            <HierarchicalDataTemplate ItemsSource="{Binding Children}"  >
                <StackPanel Orientation="Horizontal">
                    <Image Name="img"
                               Width="20"
                               Height="20"
                               Stretch="UniformToFill"
                               Source="Images/hdicon.png"/>
                    <TextBlock Text="{Binding FolderName}" Margin="5,0" />
                </StackPanel>
            </HierarchicalDataTemplate>
        </Setter.Value>
    </Setter>
</Style>

但我不能把我的活动放在那里。我应该把这些线放在哪里?

<swi:Interaction.Triggers>
    <swi:EventTrigger EventName="Expanded">
        <esi:CallDataMethod Method="Expand"/>
    </swi:EventTrigger>
</swi:Interaction.Triggers>

提前致谢!

1 个答案:

答案 0 :(得分:1)

你需要使用TreeView.ItemContainerStyle来实现这一点,这里有几个可能有帮助的实现:

Strange Behaviour WPF TreeView ItemContainerStyle and ItemTemplate

WPF Double Click TreeviewItem Child Node