WPFツールキットを使用して単純な折れ線グラフを描画しています。私の目標は、データバインディングを介してシリーズの線の色を設定することです。これは部分的にしか成功しません。問題は、なぜですか?
設定
名前空間:
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" x:Class="WpfApplication3.MainWindow"
xmlns:media="clr-namespace:System.Windows.Media;assembly=PresentationCore"
チャート:
<chartingToolkit:Chart x:Name="chart">
<chartingToolkit:LineSeries x:Name="seriesEntries" IndependentValueBinding="{Binding Key}" DependentValueBinding="{Binding Value}" DataPointStyle="{StaticResource CommonLineSeriesDataPoint}">
<chartingToolkit:LineSeries.Tag>
<media:Brush>Green</media:Brush>
</chartingToolkit:LineSeries.Tag>
</chartingToolkit:LineSeries>
</chartingToolkit:Chart>
今のところ無視してTag
ください。後で関連します。
グラフにはカスタムデータポイントスタイルがあることに注意してくださいCommonLineSeriesDataPoint
:
<Style x:Key="CommonLineSeriesDataPoint" TargetType="chartingToolkit:LineDataPoint">
<Setter Property="Background">
<Setter.Value>
<media:Brush>Red</media:Brush>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="chartingToolkit:LineSeries">
<Setter Property="DataPointStyle" Value="{StaticResource CommonLineSeriesDataPoint}" />
</Style>
予想通り、これは私のラインシリーズを赤に着色します:
画期的な変化
次に、データポイントのバックグラウンドをデータバインドします。変更を1つだけ行います。背景ブラシを直接指定する代わりに、ブラシでもあるTag
myのプロパティにバインドしますLineSeries
(前LineSeries
の宣言を参照してください。これは緑色です)。
<Style x:Key="CommonLineSeriesDataPoint" TargetType="chartingToolkit:LineDataPoint">
<Setter Property="Background">
<Setter.Value>
<Binding Path="Tag" RelativeSource="{RelativeSource AncestorType={x:Type chartingToolkit:LineSeries}}" />
</Setter.Value>
</Setter>
</Style>
<Style TargetType="chartingToolkit:LineSeries">
<Setter Property="DataPointStyle" Value="{StaticResource CommonLineSeriesDataPoint}" />
</Style>
結果は次のとおりです。
したがって、ドットは緑色です。しかし、ラインはなくなっています。
私の期待は、緑の線も見ることです!それはどこにある?