継承されたスタイルのテーマのスタイルを(ベースに継承されて)変更したいと思います。何か考えますか?これは、基本的には、wpfツールキットのマルチシリーズチャートの複数のスタイルを定義することです。WPF:継承されたテーマの要素のスタイルを変更します
<Style x:Key="A" TargetType="DVC:ColumnDataPoint">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DVC:ColumnDataPoint">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Opacity="0" x:Name="Root">
<Grid Background="{TemplateBinding Background}" Name="columngrid">
<Grid.Resources>
<Style x:Key="aquaboarder" TargetType="Border">
<Style.Resources>
<LinearGradientBrush x:Key="BackBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#B211B9D8" Offset="0.1" />
<GradientStop Color="#FF0F56C7" Offset="0.9" />
</LinearGradientBrush>
</Style.Resources>
<Setter Property="Background" Value="{StaticResource BackBrush}"/>
</Style>
</Grid.Resources>
<Border Name="columnBorder" BorderBrush="Transparent" BorderThickness="1" CornerRadius="20,20,0,0" Style="{StaticResource aquaboarder}">
</Border>
</Grid>
<ToolTipService.ToolTip>
<ContentControl Content="{TemplateBinding FormattedDependentValue}" />
</ToolTipService.ToolTip>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
そして、次のように継承されたスタイルが行く:
<Style x:Key="B" BasedOn="{StaticResource A}" TargetType="DVC:ColumnDataPoint">
<Style.Resources>
<LinearGradientBrush x:Key="BackBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#B24DE509" Offset="0.1" />
<GradientStop Color="#FF238910" Offset="0.9" />
</LinearGradientBrush>
</Style.Resources>
</Style>
が、私は「スタイルB」で定義されているbackbrushを使用するために、「スタイルA」でcolumngridを設定するコードは次のように見えます。私はスタイルBのより多くのものをやりたいとは思わない。継承されたスタイルの多くは後でこのスタイルを変更するだけで定義されるからだ。
こんにちはリック、お返事ありがとう、遅いコメントには申し訳ありません。私はちょうど貴重なアイディアを得て、チャートの作成に実装しました。私は別の問題があります、私はすべてのチャートが共通の色のテーマを共有するようにしたい。したがって、私はさまざまな列の背景色をチャートパレットで定義されている色から継承したいと思います。この場合、私は何をすべきですか?現在、データポイントシリーズタイプ(たとえば、列データポイント)をオーバーライドするとすぐに、オレンジ色のみを取得します。前もって感謝します。 –
最も簡単な方法は、背景をデータコンテキスト内のプロパティにバインドし、そこに色を設定することです。この方法については、次のURLで説明しています。http://blogs.msdn.com/b/delay/archive/2009/02/04/columns-of-a-different-color-customizing-the-appearance-of-silverlight-charts- with-re-templating-and-mvvm.aspx –
こんにちはリック、あなたの役に立つコメントと答えに感謝しています。私はあなたが提供したリンクの中のコンテンツを見て、物事を働かせようとします:-) –