編集: ブラシに変換した16進値(文字列)があったため、次のように色を正常に取得できませんでした:
(Color)ColorConverter.ConvertFromString(colorArray[0])
残っている唯一の問題は、スケーリング (色) です。
私のカラーバーは(もう一度)透明に見えますが、各バーに適切な色が付けられています。また、プログラムの起動時に、6 つのバーすべてが表示されます (ただし、まだ値がないため、表示されません)。 コード:
<Border Height="30" Margin="15" Grid.RowSpan="6" >
<Border.Background>
<LinearGradientBrush StartPoint="0.0,0" EndPoint="1.0,0">
<GradientStopCollection>
<GradientStop Offset="0.0" Color="{Binding FillBar, UpdateSourceTrigger=PropertyChanged}" />
<GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}" />
</GradientStopCollection>
</LinearGradientBrush>
</Border.Background>
</Border>
バーの中央/端にある透明な色のフェードを正確に取り除くにはどうすればよいですか?
2 番目のオフセットに同じ色を追加しようとすると、全長バー (100%) が表示され、スケーリングが再び無効になります。
シンプルな棒グラフを表す DateTemplate を持つ次の ItemsControl があります。
<ItemsControl x:Name="icGrafiek"
Margin="0,0,0,0"
ItemsSource="{Binding Source={StaticResource Grafiek}}"
ItemTemplate="{DynamicResource GrafiekItemTemplate}"
RenderTransformOrigin="1,0.5" Grid.RowSpan="6" Grid.Column="1"/>
<DataTemplate x:Key="GrafiekItemTemplate">
<Grid>
<Border Height="30" Margin="15" Grid.RowSpan="6" >
<Border.Background>
<LinearGradientBrush StartPoint="0.0,0" EndPoint="1.0,0">
<GradientStopCollection>
<GradientStop Offset="0.0" Color="#fff" />
<GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}"
Color="{Binding Fill, UpdateSourceTrigger=PropertyChanged}" />
<GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}"
Color="{Binding Fill, UpdateSourceTrigger=PropertyChanged}" />
</GradientStopCollection>
</LinearGradientBrush>
</Border.Background>
</Border>
</Grid>
</DataTemplate>
問題は、チャート コントロールのバーの色を実際に表示することです。
以下が表示されます。
代わりにGradientBrush
a を使用してバーを作成する前に。Rectangle
GradientBrush を使用して、バーをスケーリングできるようにしました ( ValueBinding
は1.0 から 0 の間の値を持つリストを返すため、スケーリングされます)。長方形を使用すると、スタックし、返された 1.0 - 0 の値に従ってバーをスケーリングする方法がありませんでした。
の古いコードRectangle
:
<DataTemplate x:Key="GrafiekItemTemplate">
<Grid>
<Rectangle StrokeThickness="0" Height="30"
Margin="15"
HorizontalAlignment="Left"
VerticalAlignment="Stretch"
Width="{Binding Value, UpdateSourceTrigger=PropertyChanged}"
Fill="{Binding Fill, UpdateSourceTrigger=PropertyChanged}">
<Rectangle.LayoutTransform>
<ScaleTransform ScaleX="20" />
</Rectangle.LayoutTransform>
</Rectangle>
</Grid>
</DataTemplate>
Fill Binding で Rectangle を使用すると、チャートは次のようになります (そうあるべきです) Binding
。
LinearGradientBrush
上の図に示されている色 (色の 16 進値を保持する配列) をどのように塗りつぶすのですか? 色の順番はそのままです。
または、これが不可能な場合、実際に長方形でそれをどのようにやってのけるのですか? 長方形を使用した他のソリューションがある場合は、それを再度実装できます。
よろしくピーターP。