编辑: 我将十六进制值(字符串)转换为画笔,因此它没有采用我的颜色,如下所示:
(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>
我究竟如何摆脱酒吧中间/末端的透明褪色?
当我尝试向第二个偏移添加相同的颜色时,我得到全长条(100%)并且缩放再次无效。
突然间,控件也有一个空的部分。当控件没有转动 180 度时,这种行为根本不会发生!
我有一个ItemsControl
使用 aDataTemplate
所以项目显示为矩形。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 行的 Grid 内。我已将控件的行跨度设置为 6,列跨度设置为 1。
我想要达到的目标:
itemsControl 的最大值应该占据网格第二列的整个长度。目前我正在做一些计算(这会返回一个带有值的列表)以传递给Fill
绑定,并将这个结果乘以例如 100 或 1000。但这是我想避免的硬编码。
我如何确保这些长度是动态的,而不是用我乘以 2000 来填充我的屏幕的值填充它们。例如网格中第二列的大小。
我也可以Blend
使用这个布局。