从另一个类/ ViewModel更改WPF数据上下文中的属性值?

时间:2017-07-11 22:54:34

标签: c# wpf data-binding

我正在尝试理解数据上下文以及不同视图模型中的属性如何应用于WPF中的窗口。

假设我有一个简单的示例表单,其中包含以下代码隐藏:

XAML代码背后

    public partial class pageTest : Page
    {
        public pageTest ()
        {
            InitializeComponent();
            this.DataContext = new AnotherClass();
        }
    }
}

现在,让我们假设我们在AnotherClass类中有一个属性,它是一个名为Visible的布尔值。此可见值用于折叠并显示特定元素。

现在,我的困惑在于理解如何从另一个ViewModel操纵这个Visible属性。看到我创建了AnotherClass类的特定实例,在另一个时间点从另一个ViewModel更改Visible属性的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

嗯...通常你会试着避免WPF中的代码并采用MVVM方式。

无论如何,您必须将该属性设置为静态,因此它跨实例生成,或者使用依赖注入(DI)注入实例,因此无论需要更改它,都可以访问该对象。

对于(有偏见的)mvvm评论,您可以查看this article

我强烈建议采用这种方式,也可能正在寻找DI,因为它们有很多框架可以帮助你(ninject和autofac pop to mind,但谷歌它,有很多)。