我用HierarchicalDataTemplate绑定treeview的数据后,怎么添加treeviewitem的右击事件?这是xaml中的代码 <TreeView Name="treeView2" Margin="3,62,0,0" HorizontalAlignment="Left" Width="317" TreeViewItem.Selected="treeView2_Selected">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:PropertyNodeItem}" ItemsSource="{Binding Path=Children}" >
<StackPanel Orientation="Horizontal">
<Image VerticalAlignment="Center" Source="{Binding Icon}" Width="16" Height="16" Margin="0,0,2,2"></Image>
<TextBlock VerticalAlignment="Center" Text="{Binding DisplayName}" ></TextBlock>
<Image VerticalAlignment="Center" Source="{Binding EditIcon}" Margin="2,0,0,0"></Image>
<StackPanel.ToolTip>
<TextBlock VerticalAlignment="Center" Text="{Binding Name}" TextWrapping="Wrap" MaxWidth="200" ></TextBlock>
</StackPanel.ToolTip>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
treeviewitem的一些事件应该怎么添加?
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:PropertyNodeItem}" ItemsSource="{Binding Path=Children}" >
<StackPanel Orientation="Horizontal">
<Image VerticalAlignment="Center" Source="{Binding Icon}" Width="16" Height="16" Margin="0,0,2,2"></Image>
<TextBlock VerticalAlignment="Center" Text="{Binding DisplayName}" ></TextBlock>
<Image VerticalAlignment="Center" Source="{Binding EditIcon}" Margin="2,0,0,0"></Image>
<StackPanel.ToolTip>
<TextBlock VerticalAlignment="Center" Text="{Binding Name}" TextWrapping="Wrap" MaxWidth="200" ></TextBlock>
</StackPanel.ToolTip>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
treeviewitem的一些事件应该怎么添加?
{ }
MouseRightButtonDown="treeView2_MouseRightButtonDown">
<TreeView.ItemTemplate>
{
TreeViewItem aa = (TreeViewItem)this.treeView2.SelectedItem; if (aa.Header.ToString().Trim() == "2")
{
MessageBox.Show("aaaaa");
}
}
在网上好像有这种说法
<Style TargetType="TreeViewItem">
<EventSetter Event="TreeViewItem.PreviewMouseRightButtonDown" Handler="TreeViewItem_PreviewMouseRightButtonDown"/>
</Style>
这段代码有问题,看上去貌似是注册事件的,就是不会用
可以的,你可以使用Command,然后把需要的信息用CommandParameter传给Command的处理方法就可以了
具体方法:
在Blend设计器中,选中StackPanel,在资产面板中双击选择行为,会生成如下的代码:
<StackPanel Orientation="Horizontal">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding CustomCommand}" CommandParameter="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Image...
...
</StackPanel>上面要将绑定项的DataContext数据传给Command方法,如果要将treeview传给Command方法,则使用:CommandParameter="{Binding ElementName=treeView2}"关于如何使用Command可以查找下微软的帮助其实StackPanel的DataContext就是绑定的数据项,如果你只要取绑定行的数据,那么直接从sender里获取DataContext就可以了