我确定答案已经在那里,但似乎无法找到它。我有一个SubView,我在MainViewModel中动态。然后使用样式将其显示给用户。当我创建SubViewModel的新实例时,如果它与之前的类型相同,则不会重新创建View。这是一个问题,因为所选选项卡保持不变,并且不会重置为第一个选项卡。虽然我可以在ViewModel中保存选定的选项卡索引来重置它,但我觉得它纯粹是View状态,不应该存在于ViewModel中。我认为这是样式没有注意到实例已经改变。无论如何,每次ViewModel更改时强制View都创建一个新实例?
风格:
<DataTemplate DataType="{x:Type vm:SubViewModel}">
<v:SubView />
</DataTemplate>
MainViewModel:
if (DisplayItemControl != null)
{
DisplayItemControl.Cleanup();
DisplayItemControl = null;
}
DisplayItemControl = new SubViewModel();
答案 0 :(得分:1)
将x:Shared="false"
添加到 DataTemplate 资源应该允许创建新实例。当DisplayItemControl
直接设置为新值而不是先将其设置为null时,这不起作用,所以我注意到了。
<DataTemplate DataType="{x:Type vm:SubViewModel}" x:Shared="false">
<v:SubView />
</DataTemplate>