C# 根据基础对象的类型将命令绑定到TreeViewItem

C# 根据基础对象的类型将命令绑定到TreeViewItem,c#,wpf,mvvm-light,C#,Wpf,Mvvm Light,MyTreeView包含类型为ServerItem的对象,而ServerItem又包含类型为DatabaseItem的对象。Xaml如下所示: <TreeView Grid.Column="0" HorizontalAlignment="Stretch" DockPanel.Dock="Left" ItemsSource="{Binding Path=ServerItems, UpdateSourceTrigger=PropertyChanged}"> <i:Interacti

My
TreeView
包含类型为
ServerItem
的对象,而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
,我希望在用户双击
ServerItem
包含的
treevieItem
时执行该命令。换句话说-是否可以基于对象类型在WPF中绑定命令(这样第一级项将具有除第二级、第三级(等等)项之外的其他命令绑定)?

您可以使用ItemTemplateSelector


通过将此技术与多个分层数据模板结合使用,您应该可以实现您的目标。

您能举个例子吗?很抱歉没有阅读您的回复。你还在寻找解决方案吗?