Я хочу реализовать свою навигацию в своем приложении WPF. В настоящее время StartScreen.xaml отображается при запуске, но когда я нажимаю кнопку, DeviceManagement.xaml не отображается. Вызывается даже команда ShowDeviceManagement.Command-Binding неправильно выполняется в приложении WPF
Это значит, что Неточная информация? Как я могу это исправить?
App.xaml
<Application.Resources>
<DataTemplate DataType="{x:Type vm:DeviceManagementViewModel}">
<view:DeviceManagement />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:MainWindowViewModel}">
<view:StartScreen />
</DataTemplate>
</Application.Resources>
MainWindow.xaml
<Window ...>
<Window.DataContext>
<vm:MainWindowViewModel/>
</Window.DataContext>
<ContentControl
Content="{Binding ViewModel}">
</ContentControl>
</Window>
StartScreen.xaml
<UserControl ...>
<Button
Content="Click Me"
Command="{Binding DataContext.ShowDeviceManagement, RelativeSource={RelativeSource AncestorType={x:Type vm:MainWindowViewModel}}, Mode=OneWay}"/>
</UserControl>
MainWindoViewModel.cs
class MainWindowViewModel : ViewModelBase
{
public ViewModelBase ViewModel { get; set; }
public MainWindowViewModel()
{
ViewModel = this;
}
public ICommand ShowDeviceManagement
{
get
{
return new RelayCommand(action => ViewModel = new DeviceManagementViewModel());
}
}
}
Попытка инициализировать RelayCommand и установить его в частной области в конструкторе и в ShowDeviceManagement собственности просто вернуть это поле, вместо создания экземпляра команды каждый раз, когда свойство доступ. –