Я новичок в мире wpf. У меня есть контекстное меню в оболочке, как показано ниже:mvvm с призмой: установка вида из пункта меню
<ContextMenu>
<MenuItem Header="Login"
Command="{Binding WorkSpaceViewSetter}" CommandParameter="DemoApplication.View.LoginView">
<MenuItem.Icon>
<Image Height="16" Width="16" Stretch="Uniform" Source="/Images/login.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Modules" ItemsSource="{Binding AppModules}">
<MenuItem.Icon>
<Image Source="/Images/modules.png"/>
</MenuItem.Icon>
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding ModuleName}"/>
<Setter Property="Command" Value="{Binding ElementName=win, Path=DataContext.WorkSpaceViewFromType}"/>
<Setter Property="CommandParameter" Value="{Binding MainViewType}"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</ContextMenu>
Каждый элемент в ItemsSource AppModules
из модулей MenuItem имеет свойство с именем MainViewType
типа System.Type
. Я хочу изменить вид региона, когда щелкнут элемент меню, и я думаю об использовании одного ICommad
в shellviewmodel
и передачи в качестве параметра команды MainViewType
. Однако приведенный выше код не работает. Мне было интересно, почему тогда Modules
menuitem заселяется из itemssource
, как и ожидалось.
Я заметил, что команда связывания на Login
MenuItem тоже не работает, даже если он должен иметь, так как itemssource
свойство Modules
получает правильно ограничена. Кто-нибудь может предложить, как заставить его работать?
Как выглядит выполнение Execute ICommand? –
Я использую DelegateCommand от Microsoft.Practices.Prism.Commands. –