gpt4 book ai didi

c# - WPF - 将背景颜色绑定(bind)到三个 slider ?

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:10 25 4
gpt4 key购买 nike

我希望通过将标签的背景颜色绑定(bind)到三个 slider 来创建颜色选择工具,每个 slider 代表红色、蓝色或绿色。

现在我知道如何将背景颜色绑定(bind)到单个字符串,但是我该如何绑定(bind)到三个不同的控件呢?

最佳答案

您将需要创建一个IMultiValueConverter 类,并使用一个MultiBinding。如果您尝试绑定(bind) ControlBackground 属性,则需要返回一个 Brush。一个天真的实现看起来像这样:

public class BrushConverter : IMultiValueConverter
{
public object Converter(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return new SolidColorBrush(
Color.FromArgb(255, Convert.ToByte(values[0]),
Convert.ToByte(values[1]), Convert.ToByte(values[2])));
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
// this can be implemented fairly easily
throw new NotSupportedException();
}
}

然后你会像这样使用它:

<UserControl.Resources>
<lcl:BrushConverter x:Key="brushConverter" />
</UserControl.Resources>

<StackPanel Orientation="Vertical">
<StackPanel.Background>
<MultiBinding Converter="{StaticResource brushConverter}">
<Binding Path="Value" ElementName="r" />
<Binding Path="Value" ElementName="g" />
<Binding Path="Value" ElementName="b" />
</MultiBinding>
</StackPanel.Background>
<Slider x:Name="r" Minimum="0" Maximum="255" IsSnapToTickEnabled="True" />
<Slider x:Name="g" Minimum="0" Maximum="255" IsSnapToTickEnabled="True" />
<Slider x:Name="b" Minimum="0" Maximum="255" IsSnapToTickEnabled="True" />
</StackPanel>

关于c# - WPF - 将背景颜色绑定(bind)到三个 slider ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com