大家好我是WPF的新手。我在两个不同的类中有两个datacontexts,它们被视图生成数据触发器中的元素绑定,而一个或另一个不能工作,因为它们不能将两个datacontex一起绑定。如何使用datacontext绑定来自两个不同类的xaml?有没有其他方法可以让它更容易?
A类
public Window1()
{
InitializeComponent();
Appointments = new Appointments();
DataContext = Appointments;
}
B类
private void FilterAppointments()
{
this.DataContext = this;
...
答案 0 :(得分:2)
首先,您不应在严重的WPF应用程序中的任何DataContext = this;
中使用UserControl
。其次,您应该查找MVVM设计模式,该模式为每个视图提供了视图模型的概念。您的Window
或UserControl
是“视图”,您的视图模型只是包含您需要在视图中显示的所有数据属性的类。
因此,您应该声明一个视图模型类(实现INotifyPropertyChanged
interface)并将您想要的任何数据绑定到其中。最后,您应该将该对象设置为DataContext
属性值。这样,您就可以访问所需的所有数据。
再次查看您的问题,我刚刚想到您可能已将DataContext
设置为this
,以便您可以使用在Window
或{{}中声明的属性1}}。如果是这种情况,那么您应该不将UserControl
设置为DataContext
,而是使用this
来访问属性。这会释放你喜欢的实际RelativeSource Binding
。在DataContext
或Binding
:
Window
UserControl