在资源字典中,我存储了一个带有 Canvas 的 ViewBox
<Style x:Key="MyPathStyle" TargetType="Path">
<Setter Property="Fill" Value="{Binding BackgroundColorBrush,
RelativeSource={RelativeSource AncestorType=iconcontrols:IconAsVisualBrush}}"/>
</Style>
<Viewbox x:Key="Icon2">
<Canvas Width="40.000" Height="40.000">
<Canvas>
<Path Fill="#ff99baf4" Data="F1 M 14.377,23.798" />
<Path Style="{StaticResource MyPathStyle}" Data="..." />
</Canvas>
</Canvas>
</Viewbox>
所以我想使用我的控件容器(称为 IconAsVisualBrush )的 BackgroundColorBrush 更改第二个 Path 的颜色。这是
<Grid x:Name="GridIconBrush" Width="40" Height="40">
<Grid.Background>
<VisualBrush x:Name="CtrlVisualBrush" Stretch="Uniform" />
</Grid.Background>
</Grid>
VisualBrush 在 cs 中设置:
private static void OnIconBrushResourceChanged(DependencyObject source
, DependencyPropertyChangedEventArgs e)
{
IconAsVisualBrush control = source as IconAsVisualBrush;
control.CtrlVisualBrush.Visual = (Viewbox)Application.Current.FindResource(e.NewValue);
}
在我的 UserControl 中,我可以使用以下 xaml 绘制 ViewBox:
<iconcontrols:IconAsVisualBrush BackgroundColorBrush="White"
IconBrushResource="Icon2"/>
<iconcontrols:IconAsVisualBrush BackgroundColorBrush="Red"
IconBrushResource="Icon2"/>
画布已正确绘制,但颜色未正确绘制。我收到: 找不到与引用'RelativeSource FindAncestor,AncestorType='IconAsVisualBrush',AncestorLevel='1''的绑定源。BindingExpression:Path=BackgroundColorBrush; 数据项=空;目标元素是'路径'(名称='');目标属性是“填充”(输入“画笔”)
有没有办法只更改所有者控件中设置的路径填充颜色(不是使所有 IconAsVisualBrush 具有相同颜色的动态资源),以便我可以用不同的填充颜色绘制相同的形状?