Невозможно изменить собственное свойство в стиле - PullRequest
1 голос
/ 02 июля 2010

Я создаю свойство зависимости в своем пользовательском классе элемента управления DataPoint:

public abstract class DataPoint : Control
{
        public Color BaseColor
        {
            get { return (Color)GetValue(BaseColorProperty); }
            set { SetValue(BaseColorProperty, value); }
        }

        public static readonly DependencyProperty BaseColorProperty =
            DependencyProperty.Register("BaseColor", typeof(Color), typeof(DataPoint), new UIPropertyMetadata(Colors.DarkRed));

    // Other class stuff
}

Затем я создаю другой пользовательский элемент управления AreaDataPoint, наследующий DataPoint:

public class AreaDataPoint : DataPoint
{
        static AreaDataPoint()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(AreaDataPoint), new FrameworkPropertyMetadata(typeof(AreaDataPoint)));
        }

    // Other class stuff
}

В xaml я пытаюсьприсвоить значение свойству BaseColor, но оно не работает

<Style TargetType="{x:Type local1:AreaDataPoint}">
    <Setter Property="BaseColor" Value="DarkGreen" />
</Style>

Ответы [ 2 ]

0 голосов
/ 02 июля 2010

Как вы определяете, что это "не работает".Из того, что в вашем коде здесь, все правильно, так что вы можете делать что-то в другом месте, что приводит к потере значения Style.Возможно, вы устанавливаете локальное значение для BaseColor где-нибудь в коде или XAML?Вы проверили, что при использовании свойства BaseColor значение правильно выводится?Также не принято использовать цвет напрямую - в большинстве ситуаций (передний план, фон, заливка фигур) используются кисти, поэтому я бы тоже это проверил.

0 голосов
/ 02 июля 2010

Вы устанавливаете свойство «Background», а не свойство «BaseColor»?

<Style TargetType="{x:Type local1:AreaDataPoint}">
    <Setter Property="BaseColor" Value="DarkGreen" />
</Style>

Имейте в виду, что вам может потребоваться преобразователь, чтобы взять строку DarkGreen и преобразовать ее в Color страховка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...