我有一个类似于
应用程序
整个窗口定义在MainWindow.xaml
中,绿色部分是内容控件
<ContentControl Grid.Row="1"
Grid.Column="1"
Margin="5"
Content="{Binding CurrentView}"/>
MainViewModel
看起来像这样:
public RelayCommand HomeViewCommand { get; set; }
public RelayCommand DetailsViewCommand { get; set; }
public HomeViewModel HomeVm { get; set; }
public DetailsViewModel DetailsVm { get; set; }
private object _currentView;
public object CurrentView
{
get { return _currentView; }
set
{
_currentView = value;
OnPropertyChanged();
}
}
public MainViewModel()
{
HomeVm = new HomeViewModel();
DetailsVm = new DetailsViewModel();
CurrentView = HomeVm;
HomeViewCommand = new RelayCommand(o =>
{
CurrentView = HomeVm;
});
}
MainView
的当前和默认内容是HomeView
,我已经在HomeView
中实现了按下列表中的项目的事件触发器。我想知道,我应该在HomeView
方法中写什么(在单击项目时触发),以便将MainView
内容部分更改为另一个视图(在我的示例中为DetailsView
)。
private void RaisePropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
//something here to change the currentView of the MainViewModel
}
}
1条答案
按热度按时间nhaq1z211#
从discord的人那里得到了答案server.https://discord.gg/AvnpSMDY
您可以将MainViewModel传递到另一个视图模型的构造函数中,并将其分配给一个私有只读字段,如_mainViewModel。这样,您就可以通过更改CurrentView属性来更改当前视图:
或执行命令: