C# 将矩形填充绑定到lineargradientbrush
我有矩形,填充颜色由RGB滑块的MultiBindingConverter决定C# 将矩形填充绑定到lineargradientbrush,c#,wpf,C#,Wpf,我有矩形,填充颜色由RGB滑块的MultiBindingConverter决定 <Rectangle.Fill> <SolidColorBrush> <SolidColorBrush.Color> <MultiBinding Converter="{StaticResource RgbConverter}">
<Rectangle.Fill>
<SolidColorBrush>
<SolidColorBrush.Color>
<MultiBinding Converter="{StaticResource RgbConverter}">
<Binding Path="Value" ElementName="RSlider" />
<Binding Path="Value" ElementName="GSlider" />
<Binding Path="Value" ElementName="BSlider" />
</MultiBinding>
</SolidColorBrush.Color>
</SolidColorBrush>
</Rectangle.Fill>
但是没有运气。如何做到这一点?您可以直接绑定到其他矩形的Fill.Color属性,如下所示- 假设您的第一个矩形名称是rectangle1
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="Black" />
<GradientStop Offset="1" Color="{Binding ElementName=rct, Path=Fill.Color}" />
</LinearGradientBrush>
</Rectangle.Fill>
如果我理解正确,您的转换器将返回
颜色。您应该能够以与指定SolidColorBrush相同的方式指定GradientStop的颜色:
您应该能够简化此过程,而不必使用转换器:Thnx@AndrewS我已经更新了我的答案。不知道我在写那个转换器时在想什么。:)选择它是因为它的简单:)伟大的工作RV1987,非常感谢
<ObjectDataProvider ObjectInstance="{StaticResource ResourceKey=cColor}" MethodName="ChosenColor" x:Key="chColor" >
</ObjectDataProvider>
public static Color ChosenColor(this Rectangle rect)
{
return ((SolidColorBrush)rect.Fill).Color;
}
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="Black" />
<GradientStop Offset="1" Color="{Binding ElementName=rct, Path=Fill.Color}" />
</LinearGradientBrush>
</Rectangle.Fill>