DataContextChanged使用相同的参数

时间:2016-11-21 12:50:32

标签: c# xaml uwp win-universal-app windows-10

我在我的UWP应用程序中实现了新的编译绑定,但我遇到了问题。正如此处其他问题所述,我已将此代码添加到我的UserControl(s)我使用DataTemplate(s)

this.DataContextChanged += (s, e) =>
{
    if (e.NewValue != null) this.Bindings.Update();
}

在XAML中,我像往常一样定义我的数据模板(简化的XAML):

<ListView>
     <ListView.ItemTemplate>
        <DataTemplate x:DataType="dataModels:MyItemModel">
            <templates:MyDataTemplate/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

整个确实有效,但我注意到DataContextChanged事件被多次提升并且值相同。为了避免浪费CPU时间,在没有必要时多次调用Bindings.Update()(因为ViewModel是相同的),我已经添加了这个(丑陋的)解决方法:< / p>

public MyUserControl()
{
this.InitializeComponent();
this.DataContextChanged += (s, e) =>
    {
        // Check both for null and for repeated calls
        if (e.NewValue != null && e.NewValue != _LastDataContext)
        {
            _LastDataContext = e.NewValue;
            this.Bindings.Update();
        }
    };
}

// Private field to skip repeated calls of Bindings.Update()
private object _LastDataContext;

现在,这也有效,但我确定有更好的方法可以解决此问题,并防止DataContextChanged事件被多次调用#&# 39;没必要吗?

你有什么建议吗?比你的帮助更多!

0 个答案:

没有答案