我在我的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;没必要吗?
你有什么建议吗?比你的帮助更多!