Как добавить другие сеттеры программно? При попытке получить исключение InvalidOperationException (SetterBaseCollection используется)

1

У меня есть несколько определений стиля в моем файле App.xaml. Как это:

<Application x:Class="MyClient.App" ... >
    <Application.Resources>
        <SolidColorBrush x:Key="color1" Color="#FF7D7D" />
        <SolidColorBrush x:Key="color2" Color="#FF7D7E" />

        <Style x:Key="styleFor1" TargetType="charting:ColumnDataPoint">
            <Setter Property="Background" Value="{StaticResource color1}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="charting:ColumnDataPoint">
                        <Grid>
                            <Rectangle>
                                <Rectangle.Fill>
                                    <LinearGradientBrush>
                                        <GradientStop Color="#ffff3737" Offset="0" />
                                        <GradientStop Color="#80000000" Offset="1" />
                                    </LinearGradientBrush>
                                </Rectangle.Fill>
                            </Rectangle>
                            <ToolTipService.ToolTip>
                                <StackPanel>
                                    <ContentControl Content="VALUES:" FontWeight="Bold" />
                                    <ContentControl Content="{TemplateBinding FormattedIndependentValue}" />
                                    <ContentControl Content="{TemplateBinding FormattedDependentValue}" />
                                </StackPanel>
                            </ToolTipService.ToolTip>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

Я создаю диаграмму. И дайте свой DataPointStyle следующее:

Style dpStyle = Application.Current.Resources["styleFor1"]

после этого я хотел бы добавить еще несколько Setters к этому dpStyle. И когда это будет сделано, я устанавливаю диаграмму DataPointStyle для этого dpStyle. И тогда я получил исключение. Что мне делать? Пожалуйста, направляйте меня.

ОБНОВИТЬ:

Сведения об исключении (возможно, необходимо):

Недопустимое исключение InvalidOperationException

{"После того, как" SetterBaseCollection "используется (запечатан), его нельзя изменить."}

TargetSite: {Void CheckSealed()}

  • 0
    просто из любопытства .. почему вы хотите добавить сеттер динамически?
  • 0
    Поскольку моя диаграмма имеет своего рода разрешение, которое может зависеть от того, что выбрал пользователь: отображение по часам, по дням, по месяцам и т. Д., И в зависимости от выбора мне нужно настроить IndependentValueStringFormatProperty, который отображает DateTimes. гггг. МММ или МММ d., И т. Д ... и есть много комбинаций этого, я не хочу создавать стили в app.xaml для каждого.
Показать ещё 1 комментарий
Теги:
wpf
charts
wpf-style

1 ответ

4
Лучший ответ

Я понял решение. Мне пришлось использовать эту перегрузку конструкторов класса Style:

public Style(Type targetType, Style basedOn);

Просто передавая ему стиль из Application.Current... решает проблему. Круто.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню