2

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"]

その後、この dpStyle にいくつかの Setter を追加したいと思います。完了したら、チャートの DataPointStyle をこの dpStyle に設定します。そして、私は例外を得ました。私は何をすべきか?私を案内してください。

アップデート:

例外の詳細 (必要な場合があります):

InvalidOperationException が処理されませんでした

{「'SetterBaseCollection' が使用中 (封印) になった後は、変更できません。」}

TargetSite: {Void CheckSealed()}

4

1 に答える 1

4

私は解決策を考え出しました。Style クラスのコンストラクターのこのオーバーロードを使用する必要がありました。

public Style(Type targetType, Style basedOn);

Application.Current... から Style を渡すだけで問題は解決します。涼しい。

于 2014-06-11T15:10:18.493 に答える