gpt4 book ai didi

silverlight - 在 silverlight 中验证颜色

转载 作者:行者123 更新时间:2023-12-01 13:03:20 24 4
gpt4 key购买 nike

我在一个模板类中构建了一些 xaml,我需要一个矩形来将 Fill 属性设置为来自最终用户填充的文本框的内容。因此,我需要在输出 xaml 之前验证该值是否可转换为 Brush 对象。否则,如果该值不是有效颜色(命名或未命名),我将得到以下信息:错误:Sys.InvalidOperationException:控件“sldivparent”的 XAML 无效。 [](第 6 行,第 412 列):无法从文本“NotValidColorValue”创建“System.Windows.Media.Brush”。显然,我不想要那个,如果值无效,我只希望它是白色。

那么在继续之前我如何确保“NotValidColorValue”是一个有效的颜色值?

谢谢

编辑以进一步说明:我正在使用颜色选择器,从 silverlight 调用 YUI 颜色选择器是准确的,它工作正常。问题是用户还可以直接在文本框中输入颜色(#112233 或“红色”),并且该颜色必须有效,如果无效则显示白色。我不想进入颜色名称的整个手动检查,所以理想情况下我想尝试使用用户输入的任何类型创建某种类型的对象(可能是某种 Brush 衍生物),如果不成功我会知道颜色值无效并采取相应措施。

最佳答案

更新
对这个问题做了更多的思考。您可以只绑定(bind)值 :) 这将验证颜色并设置它。无效值将使用 FallbackValue White。

<Rectangle Fill="{Binding ElementName=textBox,
Path=Text,
FallbackValue=White}"/>
<TextBox Name="textBox" Text="Green"/>

如果您需要在代码中使用像 IsColorValid 和 GetColorFromValue 这样的方法,您也可以像这样使用 Bindings

private bool IsValidColor(string colorValue)
{
if (colorValue == "White" || colorValue == "#FFF" || colorValue == "#FFFF" ||
colorValue == "#FFFFFF" || colorValue == "#FFFFFFFF")
{
return true;
}
Brush fallbackBrush = new SolidColorBrush(Colors.White);
Rectangle validationRectangle = new Rectangle();
Binding validationBinding = new Binding();
validationBinding.Source = colorValue;
validationBinding.FallbackValue = fallbackBrush;
validationRectangle.SetBinding(Rectangle.FillProperty, validationBinding);
if (validationRectangle.Fill == fallbackBrush)
{
return false;
}
return true;
}
private Color GetColorFromValue(string colorValue)
{
Rectangle validationRectangle = new Rectangle();
Binding validationBinding = new Binding();
validationBinding.Source = colorValue;
validationBinding.FallbackValue = new SolidColorBrush(Colors.White);
validationRectangle.SetBinding(Rectangle.FillProperty, validationBinding);
return ((SolidColorBrush)validationRectangle.Fill).Color;
}

关于silverlight - 在 silverlight 中验证颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4539430/

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