TabControl静态资源路径图标在选项卡的开关上消失

时间:2016-01-08 08:49:58

标签: wpf xaml tabs tabcontrol staticresource

我似乎没有找到如何在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选项卡后,第一个中的图标将不再可见。它只发生在相同的图标上(如果第二个标签中没有图标,它将保持可见)。

tab control behaviour

我该怎么办?

顺便说一句,我的按钮都有样式,但当它们只是带有路径内容的简单矩形按钮时,会发生同样的事情。

1 个答案:

答案 0 :(得分:0)

问题是您的路径是在多个地方使用StaticResourceExtension引用的(Button的不同实例)。由于PathFrameworkElement,并且它只能在可视树中出现一次,所以如果加载第二个标签(因此将Path加载到此标签中),它会从上一个标签(为了满足上述条件)。观察它在所选的最后一个标签中始终可见。

要解决此问题,您需要在资源字典中的x:Shared="False"上设置Path - 这样一旦使用StaticResouceExtension引用它,将返回副本而不是资源字典中的实际实例,每个实例都将按预期加载并保留在可视化树中。