Я собирался создать Style
для MapPolygon
, но я не могу добавить Setter
для чего-либо, кроме свойств, унаследованных от Control
, что не очень помогает, так какMapPolygon фактически не использует многие из этих свойств.
В основном я хочу иметь возможность стилизовать свойства Fill
, Stroke
и StrokeThickness
.Однако, когда я пытаюсь сделать это, я получаю следующую ошибку: "Ссылка на объект не установлена для экземпляра объекта" .Правильно ли я считаю, что это потому, что свойства, которые я пытаюсь стилизовать, не являются свойствами зависимостей (DependencyProperty
)?
Если мое мышление здесь действительно верно, будет ли самый простой способ решить эту проблему:создайте пользовательский элемент управления MapPolygon
и создайте свойства зависимостей для Fill
, Stroke
и StrokeThickness
?
Дайте мне знать, если мне нужно что-то уточнить.
Обновление:
public class StyledMapPolygon : MapPolygon {
public static readonly DependencyProperty FillProperty =
DependencyProperty.Register("Fill", typeof(Brush), typeof(StyledMapPolygon),
new PropertyMetadata(new SolidColorBrush(), new PropertyChangedCallback(OnFillChanged)));
private static void OnFillChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
StyledMapPolygon instance = (StyledMapPolygon) d;
instance.Fill = e.NewValue as Brush;
}
}
.
<Style x:Key="CustomStyle" TargetType="exts:StyledMapPolygon">
<Setter Property="Fill" Value="{StaticResource BuildingFillBrush}" />
</Style>
Это просто упрощенная версия стиля, который я хотел бы использовать.StyledMapPolygon
- это созданный мной объект, унаследованный от MapPolygon
.Единственное отличие состоит в том, что я создал DependencyProperty
для «Fill», который просто сопоставляется с базовым свойством.
Указанная выше ошибка все еще появляется в «Fill» в Setter
, но теперь она работает (правильно отображается на телефоне).Я могу жить с ошибкой, поскольку она все еще работает, но я бы очень хотел, чтобы мое приложение не содержало ошибок.