2011-02-24 148 views
2

触发事件的最正确的方法我目前使用这个扩展设置这在视图模型...例处理数据的特定事件:WPF MVVM - 什么是内树型视图

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

凡ESI及开关是:

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

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

Strange Behaviour WPF TreeView ItemContainerStyle and ItemTemplate

WPF Double Click TreeviewItem Child Node

+0

但是如何设置使用行为与交互lib中的触发器? – 2011-02-24 18:09:40

+0

您可以尝试以下位置: ShahidAzim 2011-02-25 11:46:41