【发布时间】:2009-10-14 15:00:35
【问题描述】:
我希望每个可点击的 TreeViewItem 都执行TreeViewItem_MouseLeftButtonDown,有没有办法把它放在样式中,所以我不必到处定义它。我可以在后面的代码中遍历所有子项,但我认为会有一种更简单的方法来完成它。
下面的代码给了我:
找不到样式属性 'PreviewMouseLeftButtonDown' 在 类型 'System.Windows.Controls.TreeViewItem'。
<Window x:Class="TestClickTree2343.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStartupLocation="CenterScreen"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="True" />
<Setter Property="Foreground" Value="#aaa" />
</Style>
<Style x:Key="TreeViewItemClickableStyle" TargetType="TreeViewItem">
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Foreground" Value="#000" />
<Setter Property="PreviewMouseLeftButtonDown" Value="TreeViewItem_MouseLeftButtonDown" />
</Style>
</Window.Resources>
<StackPanel>
<TreeViewItem Header="Files">
<TreeViewItem Header="File 1">
<TreeViewItem Header="Part 1">
<TreeViewItem Style="{StaticResource TreeViewItemClickableStyle}" Header="Paragraph 1"/>
<TreeViewItem Header="Paragraph 2"/>
</TreeViewItem>
</TreeViewItem>
</TreeViewItem>
</StackPanel>
</Window>
【问题讨论】:
-
无论你想做什么,你都可能走错了路。这有一种非常 Winforms 的味道。
-
我要做的就是响应对树视图中项目的点击。
-
我会更改模板,插入一个(样式)按钮并附加一个命令。但是如果你不做 MVVM,这可能有点难......
-
好的,我现在正在尝试: