使用XAML(UWP)中的十六进制为整数DependencyProperty赋值

使用XAML(UWP)中的十六进制为整数DependencyProperty赋值,uwp,uwp-xaml,dependency-properties,Uwp,Uwp Xaml,Dependency Properties,这里更大的问题是UWP是否有一种机制来促进C代码解释/解析XAML字符串值,以确定底层DependencyProperty值,就像神奇地管理Fill=“”等笔刷属性一样 有没有人知道允许使用各种字符串格式(“红色”、“绿色”、“11223344”等)定义SolidColorBrush的机制是否可以在C代码中为我们自己的DependencyProperty对象类型复制?您可以在Windows Community Toolkit中使用该类。它允许用户将文本名称、HTML十六进制、HSV或HSL中的颜

这里更大的问题是UWP是否有一种机制来促进C代码解释/解析XAML字符串值,以确定底层DependencyProperty值,就像神奇地管理Fill=“”等笔刷属性一样

有没有人知道允许使用各种字符串格式(“红色”、“绿色”、“11223344”等)定义SolidColorBrush的机制是否可以在C代码中为我们自己的DependencyProperty对象类型复制?

您可以在Windows Community Toolkit中使用该类。它允许用户将文本名称、HTML十六进制、HSV或HSL中的颜色转换为Windows UI颜色(当然也可以转换回来)

使用Microsoft.Toolkit.Uwp.Helpers;
//给定HTML颜色,让我们将其转换为Windows颜色
Windows.UI.Color Color=ColorHelper.ToColor(“#3a4ab0”);
//也适用于Alpha代码
Windows.UI.Color myColor=ColorHelper.ToColor(“#ff3a4ab0”);
//给定颜色名称,让我们将其转换为Windows颜色
Windows.UI.Color redColor=“Red”.ToColor();

颜色内部有一套转换机制,但我们不知道它是如何实现的。因此,如果您想使用十六进制为一个整数dependencProperty赋值,您只能手动实现。谢谢,Faywang。因此,这个问题实际上是“如何”手动操作。如何使DependencyProperty的类型为“int”(或类似),但又允许编写XAML的人指定“#11223344”。这就是像“填充”这样的“技巧”属性的作用。当基础DependencyProperty是“Brush”类型时,它们实际上接受一个字符串进行转换。对于Brush,它允许预定义的颜色名称和十六进制设置值,因为XAML解析器将颜色名称转换为具有正确颜色通道或ARGB显示的颜色结构,但是,如果要将十六进制值传递给整数值,则需要手动转换。例如,当您获取十六进制字符串值时,可以在代码隐藏中将其转换为int值,然后将其传递给integer DependencyProperty。@kburgoyne您的问题不合理。如果您定义了一个“int”dependencProperty,并希望在xaml上为其指定一个类似“#FFFFFF”的字符串值,那么这是不可能的。您将从VisualStudio获得错误信息。您需要指定一个字符串值,xaml渲染引擎至少可以将其转换为依赖项属性类型。例如,您可以定义SolidColorBrush依赖项属性,并为其指定字符串值,如“红色”、“绿色”、“#11223344”。公共SolidColorBrush Fill{get{return(SolidColorBrush)GetValue(FillProperty);}set{SetValue(FillProperty,value);}//使用DependencyProperty作为填充的后备存储。这将启用动画、样式、绑定等。。。public static readonly dependencProperty FillProperty=dependencProperty.Register(“Fill”、typeof(SolidColorBrush)、typeof(MyUserControl1)、new PropertyMetadata(0));