C# 在WPF MVVM中的按钮单击命令上添加新的Usercontrol
嗨,我正在尝试动态显示usercontrol,但它不起作用…请帮助我改进代码。 在MainWindowViewModel的cunstructor中,我尝试设置contentcontrol的初始属性。 先谢谢你C# 在WPF MVVM中的按钮单击命令上添加新的Usercontrol,c#,wpf,mvvm,C#,Wpf,Mvvm,嗨,我正在尝试动态显示usercontrol,但它不起作用…请帮助我改进代码。 在MainWindowViewModel的cunstructor中,我尝试设置contentcontrol的初始属性。 先谢谢你 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:VM="clr-namespace:WpfApplication1.ViewModel"
xmlns:View="clr-namespace:WpfApplication1.View"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type VM:FirstControlViewModel}">
<View:FirstControl></View:FirstControl>
</DataTemplate>
<DataTemplate DataType="{x:Type VM:SecondControlViewModel}">
<View:SecondControl></View:SecondControl>
</DataTemplate>
</Window.Resources>
<Grid>
<ContentControl Content="{Binding LoadedControl}" />
</Grid>
</Window>
您需要将LoadedControl设置为ViewModel类型的实例,而不是字符串
public MainViewModel()
{
LoadedControl = new FirstControlViewModel();
}
private ViewModelBase _LoadedControl;
public ViewModelBase LoadedControl
{
get { return _LoadedControl; }
set { _LoadedControl = value;
NotifyPropertyChanged("LoadedControl");
}
}
按钮在哪里?@hossein实际上按钮命令出现在使用RealyCommand实现的FirstControlViewModel上。但我的实际问题是,当我在cunstructor中设置属性时,它必须反映,谢谢,它可以工作,但我还有一个问题,你在我的XAML文件中注意到了,你的XAML文件中有什么问题?谢谢,它可以工作,但我在我的XAML文件中还有一个问题,你注意到了,如果我使它成为ViewModelBase,它就不适用于SecondUserControl视图模式FirstControlViewModel和SecondControlViewModel都必须从ViewModelBase继承。你的XAML看起来不错。你必须说问题出在哪里。。。
public MainViewModel()
{
LoadedControl = new FirstControlViewModel();
}
private ViewModelBase _LoadedControl;
public ViewModelBase LoadedControl
{
get { return _LoadedControl; }
set { _LoadedControl = value;
NotifyPropertyChanged("LoadedControl");
}
}