我有一年前发布的同一个问题here,但正如在那里的评论所述,所谓的正确答案根本不起作用。
我的设置类似于原始问题中描述的设置:我有一个资源字典,其中包含两个BitmapImages和一个要应用于PushButton的Style,它根据IsChecked属性上的触发器选择其中一个图像。 / p>
第二资源字典(例如,包含一个资源字典的单独xaml文件)通过MergedDictionary添加第一资源字典(例如,第一xaml文件),然后将该样式应用于多个 PushButtons。但由于某些原因我无法理解,这种风格一次只适用于一个 PushButton。切换不同的PushButton然后将样式应用于新切换的PushButton并将其从先前的PushButton中删除。
这种行为显然不是预期的行为。我想发布xaml代码,但是它没有出现在预览中,即使我像其他任何代码一样缩进它。为了发布xml,我需要做些什么特别的事情吗?
以下是两个屏幕截图,显示出现了什么问题。首先,两个标记的PushButton都没有应用样式,即使我在xaml文件中指定了多少(Style = {StaticResource name})。
为了澄清,我永远不会编写任何xaml代码,根据是否切换PushButton来应用不同的样式。此图像中的两个PushButtons都使用相同的样式(绑定为StaticResource),但WPF似乎并不关心它。
发生了什么事?
答案 0 :(得分:1)
没有看到你的XAML是不可能的,但这几乎肯定是你的视觉树。也就是说,WPF正在创建一个样式的实例(单例),因此只能在一个地方托管任何视觉效果。因此,应用该样式的最后一个控件“获胜”并获得该可视树的所有权。
要测试我的理论,您可以尝试在XAML资源上设置x:Shared="False"
。但是,为了建议一个正确的解决方案,我需要看看你的XAML。