我使用的代碼來自此處:WPF/MVVM - how to handle double-click on TreeViewItems in the ViewModel?,來自接受的答案。我的XAML是這樣的:從風格標籤將命令附加到樹視圖的兒童 - 對於嵌套的兒童不同
<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>
附加命令不起作用,它should't,因爲已經有安裝在TreeView的標籤級別的命令。我想要做的是爲頂級兒童執行一個命令,另一個爲較低級別的兒童執行。我怎麼做?
編輯:
所以,薇薇建議 - 我該如何檢查,如果樹型視圖是一個根節點?
從「TreeView」中刪除附加的屬性,並添加一個'Style.Trigger'來檢查當前的'TreeViewItem'是否是根,並相應地將附加屬性應用到你目前在'TreeView'中實現的內容。 – Viv
不知道如何做到這一點,請給我一些示例代碼?你可以發表一個答案,如果它的工作,我會接受它。 –
我的意思是 - 檢查它是這樣的:''不起作用=沒有IsRootNode屬性,所以我應該自己寫嗎? –