我的水平刻度具有以下颜色映射值(或多或少): 100%红色 80%橙色 60%黄色 40%浅绿色 20%绿色 10%深绿色 现在我想在不同高度(类似于条形图)的比例上放置矩形,我想根据绝对比例和它们的高度用渐变填充它们,这样如果我的矩形从0%到40%那么它会被从深绿色到浅绿色等渐变填充。
如何实现这一目标?
希望这一切都清楚。
提前致谢
答案 0 :(得分:2)
在两个属性上使用MultiBinding:矩形在刻度上的位置及其高度,使用multiBindingConverter。
e.g:
<Window.Resources>
<c:NameConverter x:Key="myNameConverter"/>
...
</Window.Resources>
...
<Rectangle Name="myRectangle" DataContext="myDataContext">
<Rectangle.Fill>
<MultiBinding Converter="{StaticResource myGradientConverter}">
<Binding Path="PositionOnScale"/>
<Binding Path="Height"/>
</MultiBinding>
</Rectangle.Fill>
</Rectangle >
然后:
public class myGradientConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
... // do stuff here to return the corresponding Gradient
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
... // do stuff here (optional)
}
}
答案 1 :(得分:0)
我会将图表上的每个条形图设置为全尺寸,然后在条形图上方放置另一个白色矩形以“隐藏”不可见的部分。
例如,如果你有一个水平条从左到右,它应该显示40%,那么我会创建一个100%的全尺寸矩形,然后在它上面放置一个60%宽度的白色矩形它停靠在右边,这将隐藏正确的60%的栏