1
我想在我的WPF應用程序中實現我的導航。目前,StartScreen.xaml在啓動時顯示,但是當我點擊按鈕時,DeviceManagement.xaml未顯示。甚至沒有調用ShowDeviceManagement命令。命令綁定在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財產剛剛返回,而不是每個屬性訪問時間創建命令實例這一領域。 –