3

編集: ブラシに変換した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>

問題は、チャート コントロールのバーの色を実際に表示することです。

以下が表示されます。 グラデーション ブラシ

代わりにGradientBrusha を使用してバーを作成する前に。RectangleGradientBrush を使用して、バーをスケーリングできるようにしました ( 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。

4

1 に答える 1

1

ピーター、

四角形では、四角形の Fill プロパティにバインドされたデータの Fill プロパティを使用していました。どちらもブラシ型 (または派生型) です。

グラデーション ストップの場合、ブラシではなく Color オブジェクトが想定されているため、代わりに Color タイプの別のデータ プロパティを作成できます。

于 2012-05-01T17:30:04.663 に答える