0

我有与一年前在这里发布的完全相同的问题,但是正如那里的评论中所述,所谓的正确答案根本不起作用。

我的设置类似于原始问题中描述的设置:我有一个资源字典,其中包含两个 BitmapImages 和一个要应用于 PushButton 的样式,该按钮根据 IsChecked 属性上的触发器选择其中一个图像。

第二个资源字典(例如,包含一个资源字典的单独 xaml 文件)通过 MergedDictionary 添加第一个资源字典(例如,第一个 xaml 文件),然后将此样式应用于多个PushButton。但由于某种原因,我无法理解,该样式一次只应用于一个PushButton。切换不同的 PushButton 然后将样式应用于新切换的 PushButton 并将其从先前的 PushButton 中删除。

这种行为显然不是预期的。我很想发布 xaml 代码,但它不会显示在预览中,即使我像其他任何代码一样缩进它。为了发布xml,我需要做些什么特别的事情吗?

这是两个屏幕截图,显示出了什么问题。起初,两个标记的 PushButtons 都没有应用样式,即使我在 xaml 文件中指定了同样多的内容 (Style={StaticResource name})。

图表 A:切换第一个按钮以某种方式应用样式 图表 A:切换第二个按钮以某种方式将样式应用于那个按钮,但从第一个按钮中删除了样式

澄清一下,我从未编写过任何 xaml 代码来根据 PushButton 是否切换来应用不同的样式。此图像中的两个 PushButton 都使用相同的样式(绑定为 StaticResource),但 WPF 似乎并不关心它。

到底是怎么回事?

4

1 回答 1

1

没有看到您的 XAML 就不可能说,但这几乎肯定取决于您的可视化树。也就是说,WPF 正在创建您的样式的一个实例(单例),因此只能在一个地方托管任何视觉效果。因此,应用该样式的最后一个控件“获胜”并获得该可视化树的所有权。

要测试我的理论,您可以尝试设置x:Shared="False"您的 XAML 资源。但是,要提出适当的修复建议,我需要查看您的 XAML。

于 2013-05-17T14:08:29.107 回答