C# 根据基础对象的类型将命令绑定到TreeViewItem
MyC# 根据基础对象的类型将命令绑定到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
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
通过将此技术与多个分层数据模板结合使用,您应该可以实现您的目标。您能举个例子吗?很抱歉没有阅读您的回复。你还在寻找解决方案吗?