在用户控制的情况下,数据上下文不可访问
本文关键字:上下文 访问 数据 用户 控制 情况下 | 更新日期: 2023-09-27 18:35:39
我正在为以下情况寻求解决方案
在我的 Windows 10 应用程序中,我有一个 order.xaml,在该页面中我有一个用户控件,我成功地从用户控件中的订单页面接收数据上下文。但是OrderItemList_Loaded当事件在我的用户控制范围内触发时,在这种情况下我不会收到 DataContext,它是空的。在用户控制范围内发生事件时,如何访问数据上下文?
下面是用户控制的代码。
public sealed partial class OrderItemsUserControl : UserControl
{
public OrderViewModel order
{
get { return this.DataContext as OrderViewModel; }
}
public OrderItemsUserControl()
{
this.InitializeComponent();
this.DataContextChanged += (s, e) => Bindings.Update();
}
private void OrderItemList_Loaded(object sender, RoutedEventArgs e)
{
order.OrderItems.CollectionChanged += (s, args) => ScrollToBottom();
}
private void ScrollToBottom()
{
ListScrollViewer.Measure(ListScrollViewer.RenderSize);
ListScrollViewer.ScrollToVerticalOffset(ListScrollViewer.ScrollableHeight);
}
}
由于 UserControl 似乎具有与视图页面不同的 dataContext,并且您说"在数据上下文中我正在获取 OrderItems",因此删除方法"public OrderViewModel order"并更改代码以摆脱如下所示的顺序:
private void OrderItemList_Loaded(object sender, RoutedEventArgs e)
{
OrderItems.CollectionChanged += (s, args) => ScrollToBottom();
}
假设 OrderItems 是在此视图中声明的有效引用模型。