1
我正在學習WPF,並試圖創建我的第一個UserControl。我的用戶包括DependencyProperty方向問題
- 的StackPanel
- StackPanel中包含一個標籤和文本框
我想爲標籤
- 文本StackPanel - 方向將有效地影響標籤和文本框的位置
我已成功創建文本依賴項屬性並將其綁定到我的UserControls。但是,當我創建的Orientation屬性,我似乎得到以下的錯誤得到財產
as運算符必須與引用類型或可空類型可以使用(「System.Windows.Controls.Orientation」是一種非非空值類型)
public static DependencyProperty OrientationProperty = DependencyProperty.Register("Orientation", typeof(System.Windows.Controls.Orientation), typeof(MyControl), new PropertyMetadata((System.Windows.Controls.Orientation)(Orientation.Horizontal)));
public Orientation Orientation
{
get { return GetValue(OrientationProperty) as System.Windows.Controls.Orientation; }
set { SetValue(OrientationProperty, value); }
}
感謝您的幫助。
編輯: 我改變了代碼如下,它似乎按預期工作。但這是解決問題的正確方法嗎?
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); }
}
打我吧:) – 2010-05-04 16:17:29
我剛剛添加了我在代碼中所做的更改。你能評論我的改變嗎?我應該直接施放還是使用我使用的方法? – byte 2010-05-04 16:19:34
只需使用演員。你的財產不允許爲空值。 (您沒有將依賴項屬性定義爲Orientation?,也沒有將您的屬性本身定義爲Orientation?,因此不需要as關鍵字。特別是因爲您在依賴項屬性定義中提供了Orientation.Horizontal的默認值,所以沒有定義可空性。 – 2010-05-04 16:25:48