我有以下XAML代码:
<UserControl
x:Class="TreeViewWithViewModelDemo.LoadOnDemand.LoadOnDemandDemoControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TreeViewWithViewModelDemo.LoadOnDemand"
>
<DockPanel>
<TreeView ItemsSource="{Binding MyData}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</DockPanel>
</UserControl>
只要点击树视图中的项目以及展开和收缩的项目,这就可以正常工作。
除此之外,我想要做的是在双击树视图中的项目时打开一个单独的窗口。有没有办法将此命令操作绑定到此XAML并保留当前存在的内容?
由于
答案 0 :(得分:0)
听起来你想要一个适合你风格的EventSetter:
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<EventSetter Event="MouseDown" Handler="TreeViewItem_MouseDown"/>
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
然后处理在事件处理程序中打开窗口。
答案 1 :(得分:0)
您想使用InputBindings
属性,如下所示:
<TreeViewItem>
<TreeViewItem.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding Path.To.YourCommand}" />
</TreeViewItem.InputBindings>
</TreeViewItem>
这些优点是不需要后面的代码(Matts的答案需要)并使用你已经写过的ICommand
。
我不确定你是否能够将它们设置成一种风格;您可能需要执行以下操作:设置Template
的{{1}},然后使用TreeViewItem
InputBindings