[英]DataContext is not Accessible in Event of User Control
I am seeking a solution for below situation 我正在寻找以下情况的解决方案
In my windows 10 app i have a order.xaml, inside that page i have a user control, i am successfully receiving the DataContext from order page in my user control. 在我的Windows 10应用程序中,我有一个order.xaml,在该页面中我有一个用户控件,我已经从我的用户控件中的订单页面成功接收了DataContext。 But when OrderItemList_Loaded event fires within my user control i dont receive DataContext in that case, it's null.
但是,在我的用户控件中触发OrderItemList_Loaded事件时,在这种情况下我没有收到DataContext,它为null。 How can i access the DataContext in case of event within user control?
如果用户控件中发生事件,如何访问DataContext?
Below is the code of User Control. 下面是用户控制的代码。
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);
}
}
Since the UserControl appears to have a different dataContext than the View page, and you said "in datacontext i am getting OrderItems", then delete the method "public OrderViewModel order" and change code to get rid of order like: 由于UserControl似乎具有与View页面不同的dataContext,并且您说了“在datacontext中,我正在获取OrderItems”,因此删除方法“ public OrderViewModel order”并更改代码以消除顺序,例如:
private void OrderItemList_Loaded(object sender, RoutedEventArgs e)
{
OrderItems.CollectionChanged += (s, args) => ScrollToBottom();
}
Assuming OrderItems is a valid reference declaredin this viewModel. 假设OrderItems是在此viewModel中声明的有效引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.