【发布时间】:2013-05-31 12:58:11
【问题描述】:
我正在使用此处的代码:WPF/MVVM - how to handle double-click on TreeViewItems in the ViewModel?,来自已接受的答案。我的xml是这样的:
<TreeView CommandBehaviors:MouseDoubleClick.Command="{Binding ConnectServer}" CommandBehaviors:MouseDoubleClick.CommandParameter="{Binding Path=SelectedItem, RelativeSource={RelativeSource Self}}"
Grid.Column="0" HorizontalAlignment="Stretch" DockPanel.Dock="Left" ItemsSource="{Binding Path=ServerItems, UpdateSourceTrigger=PropertyChanged}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="CommandBehaviors:MouseDoubleClick.Command" Value="{Binding ConnectDb}"/>
<Setter Property="CommandBehaviors:MouseDoubleClick.CommandParameter" Value="{Binding Path=SelectedItem, RelativeSource={RelativeSource Self}}"/>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Databases}">
<TextBlock Text="{Binding}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
样式标签中的附加命令不起作用,它不应该,因为在 TreeView 标签级别上已经附加了一个命令。我要做的是为顶级孩子执行一个命令,为低级孩子执行另一个命令。我该怎么做?
编辑:
那么,正如 Viv 所建议的 - 我如何检查 treeviewitem 是否是根节点?
【问题讨论】:
-
从
TreeView中删除附加属性并添加一个Style.Trigger,以检查当前TreeViewItem是否为根,并相应地将附加属性应用于您当前在TreeView中拥有的属性 -
我实际上不知道该怎么做,你能给我一些示例代码吗?您可以发布答案,如果有效,我会接受。
-
我的意思是 - 像这样检查它:
<Trigger Property="IsRootNode">不起作用 = 没有 IsRootNode 属性,所以我应该自己写这个吗?
标签: c# wpf mvvm attachedbehaviors