我需要更改属性值 TextSource
来自另一个 ViewModel,所以我这样做是为了获取 ReaderViewModel。
ViewerViewModel.cs :
private ReaderViewModel _readerViewModel = new ReaderViewModel();
public ReaderViewModel ReaderViewModel
{
get => _readerViewModel;
set
{
_readerViewModel = value;
OnPropertyChanged("");
}
}
以及将属性的值更改为:
ReaderViewModel.TextSource = "some string";
ReaderViewModel.cs :
private string _textSource;
public string TextSource
{
get => _textSource;
set
{
_textSource = value;
OnPropertyChanged();
}
}
ReaderPage.xaml :
<Page.DataContext>
<viewModels:ReaderViewModel/>
</Page.DataContext>
...
<Grid>
<TextBox Text="{Binding TextSource}"/>
<Grid/>
但它根本不起作用,TextBox 仍然是空的。我实在想不通,问题出在哪里。 ReaderPage 的 DataContext 已设置为正确的 ViewModel。
最佳答案
I can't really figure out, where's the problem
您正在创建
ReaderViewModel
的一个实例在 View 中:<Page.DataContext>
<viewModels:ReaderViewModel/>
</Page.DataContext>
...以及
ViewerViewModel
中的另一个:private ReaderViewModel _readerViewModel = new ReaderViewModel();
设置
TextSource
后一个实例的属性不会影响绑定(bind)到前一个实例的 View 。您应该确保只有一个
ReaderViewModel
的实例。涉及。
关于c# - 另一个 ViewModel 的属性不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57872176/