感谢您帮助相对初学者理解 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}" />
...
但是,如果有超过 1 个以 Type RowDefinition
AND ALSO 为目标的样式元素ResourceDictionary
嵌套在 a 中MergedDictionary
(即使只有一个子ResourceDictionary
要合并),则应用程序将失败,并显示
System.Windows.ResourceDictionary.DeferrableContent
:已添加项目。
也就是说,尽管 2 种样式具有不同的键,但资源字典试图添加一个名称完全基于目标类型的字典项(并忽略键)。
对于我如何克服这个问题的任何帮助将不胜感激。