如何将wpf与来自不同类的特定datacontext绑定?

时间:2014-07-21 11:09:55

标签: wpf xaml binding datacontext datatrigger

大家好我是WPF的新手。我在两个不同的类中有两个datacontexts,它们被视图生成数据触发器中的元素绑定,而一个或另一个不能工作,因为它们不能将两个datacontex一起绑定。如何使用datacontext绑定来自两个不同类的xaml?有没有其他方法可以让它更容易?

A类

public Window1()
{
    InitializeComponent();
    Appointments = new Appointments();
    DataContext = Appointments;

}

B类

private void FilterAppointments()
        {
            this.DataContext = this;

...

1 个答案:

答案 0 :(得分:2)

首先,您不应在严重的WPF应用程序中的任何DataContext = this;中使用UserControl。其次,您应该查找MVVM设计模式,该模式为每个视图提供了视图模型的概念。您的WindowUserControl是“视图”,您的视图模型只是包含您需要在视图中显示的所有数据属性的类。

因此,您应该声明一个视图模型类(实现INotifyPropertyChanged interface)并将您想要的任何数据绑定到其中。最后,您应该将对象设置为DataContext属性值。这样,您就可以访问所需的所有数据。

再次查看您的问题,我刚刚想到您可能已将DataContext设置为this,以便您可以使用在Window或{{}中声明的属性1}}。如果是这种情况,那么您应该UserControl设置为DataContext,而是使用this来访问属性。这会释放你喜欢的实际RelativeSource Binding。在DataContextBinding

中试试这个Window
UserControl