我在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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top