Я создаю пользовательский элемент управления XAML в проекте UWP и собираюсь реализовать тот же шаблон, который я уже нашел пригодным для использования в приложениях WPF, для одновременного редактирования свойств элемента управления при изменении основного свойства DependencyProperty.
В приведенном ниже примере кода я показываю, как изменить SolidColorBrush
dp (называемый "ColorBrush"), когда Color
dp (называемый "Color") изменяется внешним пользователем.
В WPF этот шаблон я реализовал (правильно работает):
public partial class ColorViewer : UserControl
{
// .ctor and other functions
public Color Color
{
get { return (Color)GetValue(ColorProperty); }
set
{
SetValue(ColorProperty, value);
}
}
public static readonly DependencyProperty ColorProperty =
DependencyProperty.Register("Color", typeof(Color), typeof(ColorViewer), new FrameworkPropertyMetadata(OnColorChanged));
public SolidColorBrush ColorBrush
{
get { return (SolidColorBrush)GetValue(ColorBrushProperty); }
set { SetValue(ColorBrushProperty, value); }
}
public static readonly DependencyProperty ColorBrushProperty =
DependencyProperty.Register("ColorBrush", typeof(SolidColorBrush), typeof(ColorViewer), null);
private static void OnColorChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
var c = (Color) e.NewValue;
ColorViewer view = source as ColorViewer;
view.UpdateColorProperties(c);
}
private void UpdateColorProperties(Color c)
{
ColorBrush = new SolidColorBrush(c);
// Many other things...
}
}
В частности, я передал FrameWorkPropertyMetadata
(с методом в качестве параметра) в настройку "Color" dp.
С моим большим (и печальным) удивлением я обнаружил, что FrameworkPropertyMetadata
недоступен на платформе UWP!
Как я могу получить такой же результат в UWP?
Спасибо за внимание.
С уважением