gpt4 book ai didi

wpf - 为什么我必须在 WPF 中使用 "Resources"?

转载 作者:行者123 更新时间:2023-12-04 13:53:05 24 4
gpt4 key购买 nike

我只是深入 WPF 并发现这对我的风格有点奇怪和令人沮丧:为什么某物的值可以是 Resource 但您不能直接将值设置为 Resource 代表的内容?例子:

这是有效的:

<ToggleButton>
<ToggleButton.Resources>
<Image x:Key="cancelImage" Source="cancel.png" />
</ToggleButton.Resources>
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Content" Value="{DynamicResource cancelImage}" />
</Style>
</ToggleButton.Style>
</ToggleButton>

但这不是:
<ToggleButton>
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Content">
<Setter.Value>
<Image Source="cancel.png" />
</Setter.Value>
</Setter>
</Style>
</ToggleButton.Style>
</ToggleButton>

有什么不同?为什么两者都不起作用?我不喜欢为某些事情创建“资源”,因为它会将我的代码分割开来并使其更难阅读。

是的,我知道我的例子可以像这样简化
<ToggleButton>
<Image Source="cancel.png" />
</ToggleButton>

但这不是重点。

最佳答案

使用 setter 时,setter 的值必须支持“卡住”的能力。它可以是值类型(包括结构和枚举),也可以是派生自 Freezable 的类。

这可能对您的审美感觉没有多大帮助,但是在文件的 Resources 部分(或 ResourceDictionary)的顶部声明您的所有资源通常更清晰,而不是将它们添加到单个样式或控件的 Resources 中。

关于wpf - 为什么我必须在 WPF 中使用 "Resources"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2388235/

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