一个很简单的问题(我想!),但是我似乎找不到一个简单的答案。
我已经构建了一个测试WPF应用程序,其中包含一个tabcontrol和两个选项卡项。每个选项卡上都有一个按钮,其内容绑定到存储在本地资源字典中的路径。使用FindAncestor将Path的Fill属性绑定到按钮的Foreground属性。
问题:在tab1上内容正确显示,但在tab2上根本不显示。如果我删除FindAncestor绑定并用画笔替换(例如,白色),则两个按钮都将正确显示。
我希望我缺少一些简单的东西,因为这似乎应该可以实现。
代码:
<Window.Resources>
<ResourceDictionary>
<Path x:Key="TickIcon2" Fill="{Binding Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Control}}}" Stretch="Uniform" x:Shared="False" Data="F1 M 23.7501,33.25L 34.8334,44.3333L 52.2499,22.1668L 56.9999,26.9168L 34.8334,53.8333L 19.0001,38L 23.7501,33.25 Z"/>
</ResourceDictionary>
</Window.Resources>
<Grid>
<TabControl>
<TabItem Header="1">
<Button Content="{DynamicResource TickIcon2}" Width="50" Height="50" />
</TabItem>
<TabItem Header="2">
<Button Content="{DynamicResource TickIcon2}" Width="50" Height="50" />
</TabItem>
</TabControl>
</Grid>
我发现了一个解决方案,以防有人碰到这个问题。如果我使用“绑定”而不是“ DynamicResourse”,则路径会在两个选项卡上正确显示:
<Grid>
<TabControl>
<TabItem Header="1">
<Button Content="{Binding Mode=OneWay, Source={StaticResource TickIcon2}}" Width="50" Height="50" />
</TabItem>
<TabItem Header="2">
<Button Content="{Binding Mode=OneWay, Source={StaticResource TickIcon2}}" Width="50" Height="50" />
</TabItem>
</TabControl>
</Grid>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句