【发布时间】:2018-01-14 15:11:49
【问题描述】:
我有一个视图(在 MVVM 中),其中包含一些控件,包括树视图。作为数据上下文和模型的 ViewModel,到目前为止一切正常。 **我有两种情况: **
- 我希望我的视图针对 Treeview 项目显示 ContextMenu。
- 另一种情况,它不应该针对 Treeview 项目显示 ContextMenu
这是否可以使用一个视图,或者为此目的应该有两个不同的视图,对于我个人的工作,如果我有一个视图会更好。
VM 和模型非常简单,只需绑定 View 的属性即可。
View.xaml
<UserControl x:Class="SPM.SystemExplorer.View.SystemExplorerView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SPM.SystemExplorer.View"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
xmlns:viewModel="clr-namespace:SPM.SystemExplorer.ViewModel"
xmlns:classes="clr-namespace:SPM.SystemExplorer.Classes">
<UserControl.DataContext>
<viewModel:SystemExplorerViewVM></viewModel:SystemExplorerViewVM>
</UserControl.DataContext>
<Grid>
<StackPanel>
<Label Content="{Binding Test}"></Label>
<TreeView Grid.Row="1" ItemsSource="{Binding SystemProjects}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type classes:SystemProject}" ItemsSource="{Binding ParticipantProjects}">
<StackPanel Orientation="Horizontal">
<TreeViewItem Header="{Binding NameOfSystemProject}"></TreeViewItem>
<TreeViewItem Header="{Binding AuthorOfSystemProject}"></TreeViewItem>
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type classes:ParticipantProject}">
<StackPanel Orientation="Horizontal">
<TreeViewItem Header="{Binding NameOfParticipantProject}"></TreeViewItem>
<TreeViewItem Header="{Binding AuthorOfParticipantProject}"></TreeViewItem>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
</StackPanel>
</Grid>
【问题讨论】:
-
您可以将 SystemExplorerViewVM 的属性设置为“A”或“B”并使用数据触发器。
-
能写几行举个例子吗,我是WPF的初学者。
-
我觉得我解释的不对,我想说的是:其实我有两个案例我的看法。首先,如果我右键单击它,我希望看到我的视图在树视图项目上具有上下文菜单。第二种情况,我有相同的视图,但树视图项上没有上下文菜单。