c# - 另一个 ViewModel 的属性不会改变

标签 c# .net wpf mvvm

我需要更改属性值 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/

相关文章:

c# - 为什么这不能在 C# 中编译?

c# - 使用新创建的网络流时的网络流 "cannot access a disposed object"

c# - 避免删除 Azure 云服务发布上的文件

c# - 我需要通过 try/catch 包装一个 TransactionScope 吗?

c# - 序列化在 ScriptEngine session 中创建的类型

c# - 为什么 ASP.NET MVC View 中的 foreach 循环如此缓慢?

c# - 使用静态构造函数时 Visual Studio 的智能感知中断

WPF : How to inherit from a base(or default) style in an ItemContainerStyle

c# - 使用不安全的方法比较两个图像数据

c# - WPF中的配对的ToggleButtons