我似乎没有找到如何在wpf中制作可重复使用的路径图标的答案。我怀疑我的问题与使用Image visuals而不是Source相同,但无法弄清楚如何为Paths修复此问题。
我有一个标签控件,标签中有单独的自定义控件。他们每个人都有带有“路径”的按钮。内容。
<Button Style="{StaticResource ButtonIconStyle}"
Content="{StaticResource RefreshIcon}"
Command="{Binding RefreshCommand}"/>
图标是:
<Path x:Key="RefreshIcon" Stretch="Uniform"
Fill="{StaticResource ButtonIconColor}" Data="..."/>
我需要这个Uniform拉伸,所以我也尝试了ViewBox,但这没有用。
我打开的第一个带有此图标的标签正常显示(它可以是任何标签,而不是tabcontrol中的第一个标签)。但在切换到具有相同定义按钮的另一个选项卡并切换回prev选项卡后,第一个中的图标将不再可见。它只发生在相同的图标上(如果第二个标签中没有图标,它将保持可见)。
我该怎么办?
顺便说一句,我的按钮都有样式,但当它们只是带有路径内容的简单矩形按钮时,会发生同样的事情。
答案 0 :(得分:0)
问题是您的路径是在多个地方使用StaticResourceExtension
引用的(Button
的不同实例)。由于Path
是FrameworkElement
,并且它只能在可视树中出现一次,所以如果加载第二个标签(因此将Path
加载到此标签中),它会从上一个标签(为了满足上述条件)。观察它在所选的最后一个标签中始终可见。
要解决此问题,您需要在资源字典中的x:Shared="False"
上设置Path
- 这样一旦使用StaticResouceExtension
引用它,将返回副本而不是资源字典中的实际实例,每个实例都将按预期加载并保留在可视化树中。