繁体   English   中英

如果发生用户控制,则无法访问DataContext

[英]DataContext is not Accessible in Event of User Control

我正在寻找以下情况的解决方案

在我的Windows 10应用程序中,我有一个order.xaml,在该页面中我有一个用户控件,我已经从我的用户控件中的订单页面成功接收了DataContext。 但是,在我的用户控件中触发OrderItemList_Loaded事件时,在这种情况下我没有收到DataContext,它为null。 如果用户控件中发生事件,如何访问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似乎具有与View页面不同的dataContext,并且您说了“在datacontext中,我正在获取OrderItems”,因此删除方法“ public OrderViewModel order”并更改代码以消除顺序,例如:

private void OrderItemList_Loaded(object sender, RoutedEventArgs e)
    {
        OrderItems.CollectionChanged += (s, args) => ScrollToBottom();
    }

假设OrderItems是在此viewModel中声明的有效引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM