所以我有MainWindow.xaml
,它的BaseViewModel
的DataContext是这样设置的。
<Window.DataContext>
<viewModel:BaseViewModel/>
</Window.DataContext>
它工作正常,例如,当我在ListView中选择一个项目时,它将绑定并更新MainWindow中的ImageView。
<ListView Background="Transparent"
ItemsSource="{Binding ImageGridViewModel.Images}"
SelectedItem="{Binding ImageGridViewModel.SelectedImage}">
然后它像这样更新
<Image Source="{Binding ImageGridViewModel.SelectedImage}"
Margin="20">
完美无缺。
但是,我最近添加了第二个视图,名为Window
的{{1}},就像在XAML中那样设置WatermarkWindow
就像在MainWindow中一样。
DataContext
然后在该新<Window.DataContext>
<viewModel:BaseViewModel/>
</Window.DataContext>
上绑定Image
控件
Window
但是,当我打开该窗口时,<Image Source="{Binding ImageGridViewModel.SelectedImage}"
Margin="20">
控件的源未绑定到属性,该属性实际上返回了Image
,我想我知道为什么,我认为这是因为在我的{ {1}}每当调用该ViewModel时都会实例化一个NULL
实例。
之所以这样做,是因为我想实例化它的一个实例,这样我才能实际使用它来绑定东西。而不是它为空。
如果这不是问题所在,那么我仍然非常渴望学习和理解问题所在。
设置包含所有额外ViewModel的BaseViewModel
的正确方法是什么?
new
和ObservableObject
BaseViewModel
没关系,因为我知道属性可以正常工作,这里是ViewModel。
public class BaseViewModel : ObservableObject
{
public ImageGridViewModel ImageGridViewModel { get; set; } = new ImageGridViewModel();
}