gpt4 book ai didi

wpf - WPF DataTemplate和用户控件生存期

转载 作者:行者123 更新时间:2023-12-03 10:30:22 25 4
gpt4 key购买 nike

我有一个带有几个标签的标签控件。选择选项卡后,我将选项卡的内容设置为其相应的 View 模型。

我还为基本 View 模型定义了一个DataTemplate,所有其他 View 模型都来自该模板:

    <DataTemplate DataType="{x:Type vm:BaseViewModel}">
<view:BaseView/>
</DataTemplate>

这样,将使用相同的基本 View 显示几乎相同的我的 View 模型。

BaseView是一个用户控件。在BaseView中,我定义了Infragistics XamDataGrid。似乎只为所有 View 模型创建了该网格的一个实例,这意味着我可以在选项卡之间进行任意多次切换,但是永远不会从头开始创建用户控件。

与数据模板结合使用时,WPF如何处理用户控件的生命周期?

我要解决的问题是在BaseView的xaml中,我已经在XamDataGrid中定义了一个Field,如下所示:
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:FieldLayout.FieldSettings>
<igDP:FieldSettings DataValueChangedNotificationsActive="true"
AllowCellVirtualization="False"
AllowResize="True"
AllowRecordFiltering="True"/>
</igDP:FieldLayout.FieldSettings>
<igDP:Field Name="IsDirty" Visibility="Collapsed"/>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>

IsDirty列(所有 View 模型均具有IsDirty属性)仅在第一次显示网格时正确折叠。当我单击另一个选项卡时,网格的数据源发生更改,网格创建了一个新的FieldLayout,并且它没有选择IsDirty的“折叠”设置。结果,IsDirty列可见。我的想法是,如果我可以强制完全重新创建用户控件,则可以避免此问题。

最佳答案

DataTemplate添加到资源中并设置x:Shared="false"

关于wpf - WPF DataTemplate和用户控件生存期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com