Wpf 依赖属性定位问题
我正在学习WPF,并试图创建我的第一个UserControl。我的用户控件包括Wpf 依赖属性定位问题,wpf,user-controls,dependency-properties,Wpf,User Controls,Dependency Properties,我正在学习WPF,并试图创建我的第一个UserControl。我的用户控件包括 堆垛板 StackPanel包含标签和文本框 我正在尝试创建两个依赖项属性 标签的文本 StackPanel的方向-方向将有效影响标签和文本框的位置 我已成功创建了一个文本依赖项属性,并将其绑定到我的UserControls。但是,当我创建Orientation属性时,我似乎在get属性中发现了以下错误 as运算符必须与引用类型或可为null的类型一起使用(“System.Windows.Controls.Orien
public Orientation Orientation
{
get
{
Orientation? o = GetValue(OrientationProperty) as System.Windows.Controls.Orientation?;
if (o.HasValue)
{
return (System.Windows.Controls.Orientation)o.Value;
}
else
{
return Orientation.Horizontal;
}
}
set { SetValue(OrientationProperty, value); }
}
错误消息说明了一切。运算符只能与可为null的类型(引用类型,或
null)一起使用,
,因为它将返回值转换或null
您试图在其上使用的是枚举
只需使用常规演员阵容:
get { return (System.Windows.Controls.Orientation) GetValue(OrientationProperty); }
原因:
DependencyProperty.Register
调用中定义默认值,以消除任何默认空值typeof(Orientation)
,它不允许空值方向
,不允许为空SetValue(OrientationProperty,null)
设置无效值的尝试都会收到异常,因此即使是调皮的用户,属性getter也不会看到null值错误消息说明了一切。运算符只能与可为null的类型(引用类型,或
null)一起使用,
,因为它将返回值转换或null
您试图在其上使用的是枚举
只需使用常规演员阵容:
get { return (System.Windows.Controls.Orientation) GetValue(OrientationProperty); }
原因:
DependencyProperty.Register
调用中定义默认值,以消除任何默认空值typeof(Orientation)
,它不允许空值方向
,不允许为空SetValue(OrientationProperty,null)
设置无效值的尝试都会收到异常,因此即使是调皮的用户,属性getter也不会看到null值我刚刚添加了我在代码中所做的更改。你能评论一下我的改变吗?我应该直接使用cast还是使用我使用的方法?只需使用cast。您的属性不允许为null的值。(您没有将依赖项属性定义为Orientation?,也没有将属性本身定义为Orientation?,因此不需要as关键字。特别是因为您在依赖项属性定义中提供了默认值Orientation.Horizontal,因此没有定义为null。感谢Adam。我使用了“as”,因为我在一个属性中看到了它依赖项属性的文章,它们用作字符串返回类型。我已经对您的答案进行了投票,现在我将标记为是。感谢您的帮助。我刚刚添加了我在代码中所做的更改。您能对我的更改发表意见吗?我应该直接强制转换还是使用我使用的方法?只使用强制转换。您的属性不允许nullable值。(您没有将依赖项属性定义为Orientation?,也没有将属性本身定义为Orientation?,因此不需要as关键字。特别是因为您在依赖项属性定义中提供了默认值Orientation.Horizontal,因此没有定义为null。感谢Adam。我使用了“as”,因为我在一个属性中看到了它关于Dependency属性的文章,它们用作字符串返回类型。我已经对您的答案进行了投票,现在我将标记为是。感谢您的帮助。