Events 是否有方法以XAML样式附加事件?
我希望每个可点击的TreeViewItem都能执行Events 是否有方法以XAML样式附加事件?,events,xaml,styles,Events,Xaml,Styles,我希望每个可点击的TreeViewItem都能执行TreeViewItem\u MouseLeftButtonDown,有没有办法将其放入样式中,这样我就不必到处定义它了。我可以在代码隐藏中遍历所有的孩子,但我认为有一种更简单的方式可以以一种风格完成 下面的代码给了我: 找不到样式属性 屏幕上的“PreviewMouseLeftButtonDown” 类型 “System.Windows.Controls.TreeViewItem” 改用TreeView中的SelectedItemChanged
TreeViewItem\u MouseLeftButtonDown
,有没有办法将其放入样式中,这样我就不必到处定义它了。我可以在代码隐藏中遍历所有的孩子,但我认为有一种更简单的方式可以以一种风格完成
下面的代码给了我:
找不到样式属性
屏幕上的“PreviewMouseLeftButtonDown”
类型
“System.Windows.Controls.TreeViewItem”
改用TreeView中的SelectedItemChanged: XAML:
<TreeView SelectedItemChanged="TreeView_SelectedItemChanged" BorderThickness="0">
<TreeViewItem
Tag="File1"
Style="{StaticResource TreeViewItemClickableStyle}"
Header="File 1">
<TreeViewItem Header="Part 1">
<TreeViewItem Header="Paragraph 1"/>
<TreeViewItem
Tag="Paragraph1"
Style="{StaticResource TreeViewItemClickableStyle}"
Header="Paragraph 2"/>
<TreeViewItem Header="Paragraph 3"/>
<TreeViewItem Header="Paragraph 4"/>
<TreeViewItem Header="Paragraph 5"/>
</TreeViewItem>
</TreeViewItem>
</TreeView>
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
TreeViewItem treeViewItem = ((TreeView)sender).SelectedItem as TreeViewItem;
if (treeViewItem.Tag != null)
{
string tag = treeViewItem.Tag.ToString();
MessageBox.Show(String.Format("You clicked the tree item: {0}", tag));
}
}
代码隐藏:
<TreeView SelectedItemChanged="TreeView_SelectedItemChanged" BorderThickness="0">
<TreeViewItem
Tag="File1"
Style="{StaticResource TreeViewItemClickableStyle}"
Header="File 1">
<TreeViewItem Header="Part 1">
<TreeViewItem Header="Paragraph 1"/>
<TreeViewItem
Tag="Paragraph1"
Style="{StaticResource TreeViewItemClickableStyle}"
Header="Paragraph 2"/>
<TreeViewItem Header="Paragraph 3"/>
<TreeViewItem Header="Paragraph 4"/>
<TreeViewItem Header="Paragraph 5"/>
</TreeViewItem>
</TreeViewItem>
</TreeView>
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
TreeViewItem treeViewItem = ((TreeView)sender).SelectedItem as TreeViewItem;
if (treeViewItem.Tag != null)
{
string tag = treeViewItem.Tag.ToString();
MessageBox.Show(String.Format("You clicked the tree item: {0}", tag));
}
}
private void TreeView\u SelectedItemChanged(对象发送方,RoutedPropertyChangedEventArgs e)
{
TreeView项目TreeView项目=((TreeView)发件人)。选择EdItem作为TreeView项目;
if(treeViewItem.Tag!=null)
{
string tag=treeViewItem.tag.ToString();
Show(String.Format(“您单击了树项:{0}”,tag));
}
}
无论你想做什么,都可能是走错了路。这有一种Winforms的味道。我所要做的就是对树视图中项目的点击做出响应。我会更改模板,插入一个(样式化的)按钮并附加一个命令。但如果你不做MVVM,这可能有点难…好吧,我现在正在尝试: