感谢您为帮助初学者了解WPF的想法。
我正在尝试在WPF应用程序的XAML文件中使用以下样式模板:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<Style TargetType="{x:Type RowDefinition}" x:Key="hideIfNotDischarged">
<Style.Triggers>
<DataTrigger Binding="{Binding DischargedBy28Days, Mode=OneWay}" Value="false">
<Setter Property="Height" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type RowDefinition}" x:Key="hideIfOutcomeKnownAndAlive">
<Style.Triggers>
<DataTrigger Binding="{Binding IsKnownDead, Mode=OneWay}" Value="false">
<Setter Property="Height" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
稍后将在像这样的网格中使用:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="30" />
<RowDefinition Style="{StaticResource hideIfNotDischarged}" />
...
但是,如果有多个针对Type RowDefinition的样式元素,并且ResourceDictionary嵌套在MergedDictionary中(即使仅合并了一个子ResourceDictionary),则应用程序将失败
System.Windows.ResourceDictionary.DeferrableContent:项目已添加
也就是说,尽管这两种样式具有不同的键,但资源字典试图添加名称纯粹基于目标类型的字典项(并忽略该键)。
我将如何克服这些问题方面的任何帮助将不胜感激。
Xaml
解析所以我觉得它的检查从左到右ResourceDictionary
或其他MergedDictionaries
如果TargetType
(如果没有X默认标识:使用密钥)存在,它实现它的前x:Key
标识
尝试将设置x:Key
为TargetType
。
这可能是Xaml解析器中的错误,也可能是设计使然,可能值得一看Microsoft Connect
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句