gpt4 book ai didi

WPF XAML - 将多种样式添加到针对行定义的资源字典

转载 作者:行者123 更新时间:2023-12-03 05:02:10 24 4
gpt4 key购买 nike

感谢您帮助初学者理解 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 个针对类型 RowDefinition 的样式元素,并且 ResourceDictionary 嵌套在 MergedDictionary 中(即使只有要合并的单个子 ResourceDictionary)应用程序失败并显示System.Windows.ResourceDictionary.DeferrableContent:项目已添加。

也就是说,尽管这两种样式具有不同的键,但资源字典正在尝试添加一个名称完全基于目标类型的字典项(并忽略键)。

任何有关我如何克服这个问题的帮助将不胜感激。

最佳答案

Xaml 是从左到右解析的,因此我认为它会检查 ResourceDictionary 或其他 MergedDictionaries(如果 TargetType) >(如果未使用 x:Key 则为默认标识符)在意识到它具有 x:Key 标识符之前就存在

尝试在 TargetType 之前设置 x:Key

这可能是 Xaml 解析器中的错误,也可能是设计使然,可能值得在 Microsoft Connect 上查看一下

关于WPF XAML - 将多种样式添加到针对行定义的资源字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19416508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com