我制作了一个usercontrol
,它代表一个我想在整个项目中使用的图标。
我希望能够拥有一个属性IconColour
,该属性可用于在不同情况下将图标的颜色更改为不同的颜色,同时在整个项目中仍使用相同的单个usercontrol
。
就我的图标而言,有些属性需要根据属性进行着色,并且无论使用哪种画笔,有些属性都应保持相同的颜色。某些部分可能/可能没有遮罩,某些部分可能设置了动画等。
我的问题是,不管我在IconColour
属性上使用的画笔如何,图标都呈现为透明状态(大概是使用默认画笔,因为某些东西无法正常工作)。
我想知道如何将我的IconColour
属性正确绑定到下面Brush
的{{1}}属性,以便可以将Polygon
设置为画笔我选择的内联引用用户控件的位置。
IconColour
<UserControl>
...
<DrawingGroup Transform="1,0,0,1,227,21">
<GeometryDrawing Brush="{Binding IconBrush}">
<GeometryDrawing.Geometry>
<PathGeometry Figures="M46,51L46,51 46,23 68.4,37z" FillRule="EvenOdd" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
...
</UserControl>
namespace Style.Images.Icons.Playback.PlaybackPanelIcons
{
public partial class PlayIcon
{
public Brush IconBrush
{
get { return (Brush)GetValue(IconBrushProperty); }
set { SetValue(IconBrushProperty, value); }
}
public static readonly DependencyProperty IconBrushProperty =
DependencyProperty.Register("IconBrush", typeof(Brush), typeof(PlayIcon), new PropertyMetadata(new SolidColorBrush(Color.FromRgb(255,0,255)), new PropertyChangedCallback(OnIconBrushChanged)));
public PlayIcon()
{
InitializeComponent();
IconBrush = new SolidColorBrush(Color.FromRgb(240, 255, 5));
}
private static void OnIconBrushChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
{
PlayIcon icon = sender as PlayIcon;
icon.IconBrush = (Brush) args.NewValue;
}
}
}
答案 0 :(得分:1)
尝试一下:
<GeometryDrawing Brush="{Binding IconBrush, RelativeSource={RelativeSource AncestorType=UserControl}}">
它应该将Brush
的{{1}}属性绑定到父GeometryDrawing
的{{1}}属性。