根据底层对象的类型将命令绑定到TreeViewItem

时间:2014-02-24 22:12:17

标签: c# wpf mvvm-light

我的TreeView包含ServerItem类型的对象,后者又包含DatabaseItem类型的对象。 Xaml看起来像这样:

<TreeView Grid.Column="0" HorizontalAlignment="Stretch" DockPanel.Dock="Left" ItemsSource="{Binding Path=ServerItems, UpdateSourceTrigger=PropertyChanged}">
<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseDoubleClick">
        <cmd:EventToCommand Command="{Binding ConnectServer}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource AncestorType={x:Type TreeView}}}" />
    </i:EventTrigger>
</i:Interaction.Triggers>
<TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Databases}">
        <TextBlock Text="{Binding}" />
    </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

现在 - 绑定到ConnectServer工作正常,但我有另一个命令 - ConnectDatabase,我希望当用户双击TreeViewItem时包含的ServerItem时执行该命令} TreeViewItem。换句话说 - 是否可以根据对象类型绑定WPF中的命令(这样第一级项目将具有除第二级,第三级(等等)项目之外的其他命令绑定)?

1 个答案:

答案 0 :(得分:0)

您可以使用ItemTemplateSelector。

通过将此技术与多个Hierarchical DataTemplates结合使用,您应该达到目标。