app.xaml中的datatemplate没有任何样式没有被拾取?
-
25-10-2019 - |
题
我在app.xaml中有一个datatemplate,该数据将视图绑定到视图模型。
<Application.Resources>
<DataTemplate DataType="{x:Type vm:someviewmodeltype}">
<vw:somevwcontrol />
</DataTemplate>
</Application.Resources>
如果没有样式,则上述模板不会应用。我放置风格的那一刻,类似...
<Application.Resources>
<DataTemplate DataType="{x:Type vm:someviewmodeltype}">
<vw:somevwcontrol />
</DataTemplate>
<Style TargetType="TextBlock">
<Setter Property="FontSize" Value="20"></Setter>
</Style>
</Application.Resources>
DatateMplate被拾取并产生所需的结果...我不确定那里发生了什么...有人可以澄清一下吗?
谢谢。
解决方案
回答了一个类似的问题 这里. 。问题并不完全相同,其中包含被跳过的合并词典,但很可能是相同的错误。
这是一个优化错误,请参阅 这个链接.
关于XAML中每个对象的创建,如果存在默认样式(即带有类型的键),则应应用该样式。您可以想象,有几种性能优化可以使(暗示)查找轻重量。其中之一是,除非将其标记为“包含默认样式”,否则我们不会在资源词典中看。有一个错误:如果您的所有默认样式都嵌套在合并的词典中,则三个级别深(或更深),顶级字典不会被标记,因此搜索会跳过它。围绕的工作是将默认样式放在根词典中的任何东西上。
我看到您也已经找到了解决方法,只需在app.xaml中添加默认的虚拟样式即可。它不必有任何固定器等,类似的事情也会做到
<Application.Resources>
<DataTemplate DataType="{x:Type vm:someviewmodeltype}">
<vw:somevwcontrol />
</DataTemplate>
<Style TargetType="{x:Type Rectangle}" />
</Application.Resources>
不隶属于 StackOverflow