編集: 私はブラシに変換した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%)が表示され、スケーリングが再び無効になります。
突然、コントロールの空の部分も残っています。コントロールが180度回転していない場合、この動作はまったく発生しません。
をItemsControl
使用しているDataTemplate
ので、アイテムは長方形として表示されます。itemsControlも回転し、長方形が正しい方向に表示されるようにします。
<DataTemplate x:Key="GrafiekItemTemplate">
<Border Width="Auto" Height="Auto">
<Grid>
<Rectangle StrokeThickness="0" Height="30"
Margin="15"
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Width="{Binding Value, UpdateSourceTrigger=PropertyChanged}"
Fill="{Binding Fill, UpdateSourceTrigger=PropertyChanged}">
<Rectangle.LayoutTransform>
<ScaleTransform ScaleX="20" />
</Rectangle.LayoutTransform>
</Rectangle>
</Grid>
</Border>
</DataTemplate>
<ItemsControl x:Name="icGrafiek"
Margin="-484,3,0,0"
ItemsSource="{Binding Source={StaticResource Grafiek}}"
ItemTemplate="{DynamicResource GrafiekItemTemplate}"
RenderTransformOrigin="1,0.5" Grid.RowSpan="6">
<ItemsControl.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="-1" ScaleX="1"/>
<SkewTransform AngleY="0" AngleX="0"/>
<RotateTransform Angle="180"/>
<TranslateTransform/>
</TransformGroup>
</ItemsControl.RenderTransform>
</ItemsControl>
バインディングFill
は、それらのバー(長方形)のサイズを示します。
itemsControl自体は、2列6行のグリッド内に配置されます。コントロールの行スパンを6に、列スパンを1に設定しました。
私が達成したいこと:
itemsControlの最大値は、グリッドの2番目の列の全長を取る必要があります。現在、バインディングに渡すためにいくつかの計算(これは値を含むリストを返します)を実行しており、Fill
この結果にたとえば100または1000を掛けます。しかし、これはハードコーディングされているため、避けたいと思います。
画面を埋めるために2000を掛ける値で埋めるのではなく、これらの長さが動的になっていることを確認するにはどうすればよいですか。たとえば、グリッドの2番目の列のサイズ。
Blend
このレイアウトで作業することもできます。