【发布时间】:2008-11-26 10:15:07
【问题描述】:
我使用 MVVM 架构来解耦我的应用程序。也就是说,你经常会看到类似的东西
var u = new UserControl();
u.Content = new MyCustomType(); // MyCustomType is not a control
UI 是通过数据模板定义的,这些模板驻留在自己的 XAML 文件中的资源字典中
<ResourceDictionary ...>
<DataTemplate DataType="{x:Type local:MyCustomType}">
...
我在应用程序启动时加载资源,应用程序很乐意显示我的 UI。但是如果我删除一个数据模板并添加一个新的(相同的键,相同的数据类型),UI 仍然使用旧的数据模板。当然,我可以重新设置容器的内容以强制刷新,但这似乎很愚蠢,因为我必须通知每个控件有关更改,就像这样
var tmp = control.Content;
control.Content = null;
control.Content = tmp; // New data template will be used
还有其他方法吗?
【问题讨论】:
-
为什么要删除模板?
-
@Krzysztof Skowronek 人,这个问题已有 10 年历史了。你真的希望我记住这个细节吗?
-
对不起,我没注意到:(
标签: c# wpf datatemplate skinning