我很新于Xaml,需要一些建议。
TreeView应该绑定到一个分层的对象结构上。TreeView应该有一个上下文菜单,该菜单针对每种对象类型都是特定的。
我尝试了以下方法:
<TreeView>
<TreeView.Resources>
<DataTemplate x:Key="RoomTemplate">
<TreeViewItem Header="{Binding Name}">
<TreeViewItem.ContextMenu>
<ContextMenu>
<MenuItem Header="Open" />
<MenuItem Header="Remove" />
</ContextMenu>
</TreeViewItem.ContextMenu>
</TreeViewItem>
</DataTemplate>
</TreeView.Resources>
<TreeViewItem Header="{Binding Name}" Name="tviRoot" IsExpanded="True" >
<TreeViewItem Header="Rooms"
ItemsSource="{Binding Rooms}"
ItemTemplate="{StaticResource RoomTemplate}">
<TreeViewItem.ContextMenu>
<ContextMenu>
<MenuItem Header="Add room"></MenuItem>
</ContextMenu>
</TreeViewItem.ContextMenu>
</TreeViewItem>
</TreeViewItem>
但是使用这种标记时,行为是按预期进行的,但子项(房间)缩进太多。
无论如何,我能找到的所有绑定示例都使用TextBlock而不是TreeViewItem在DataTemplate中,但想知道如何在那里集成ContextMenu。
<HDT><TreeViewItem Header="Rooms" ItemsSource="{Binding}" /></HDT>
。虽然没有经过测试!如果这不起作用,你可能想要将其发布为一个新问题,因为这将很可能得到更多的关注,因此会得到更好的答案 - 只是一个建议! - itowlson