Я сделал usercontrol
, который представляет собой иконку, которую я хочу использовать в своем проекте.
Я хочу иметь свойство IconColour
, которое я могу использовать для изменения цвета моего Icon на разные цвета в разных ситуациях, при этом все равно используя один и тот же usercontrol
во всем проекте.
В случае моей иконки есть части, которые я хочу закрасить в соответствии со свойством, а некоторые должны оставаться одного цвета независимо от используемой кисти. Некоторые части могут иметь / не иметь маскировку, некоторые части могут быть анимированными и т. Д.
Моя проблема в том, что независимо от кисти, которую я использую в своем свойстве IconColour
, значок отображается прозрачным (предположительно с использованием кисти по умолчанию, потому что что-то не работает должным образом).
Я хочу знать, как правильно связать свое свойство IconColour
со свойством Brush
из Polygon
ниже, чтобы я мог установить IconColour
для кисти по своему выбору inline, где бы ни находился пользовательский контроль ссылки.
Фрагмент из пользовательского элемента управления Icon
<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>
Поддержка C # для Icon User Control
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;
}
}
}
Фрагмент, из которого используется Icon User Control
<Button>
<StackPanel>
<Icons:PlayIcon IconBrush="Green" Width="28" Height="28" />
</StackPanel>
</Button>