2012-09-05 30 views
0

在我們的Metro應用程序中,我有一個enum類型的附加屬性。在Metro中使用WPF樣式屬性設置器時,Enum依賴項屬性設置爲空

當設置直接作爲XAML屬性值的元素的屬性獲取設置細,但在一個風格使用Setter元件時,雖然屬性設置它被設置爲一個null值(即,e.NewValue在下面的代碼爲空)

這是爲什麼?這是造成問題,顯然不能轉換爲枚舉類型。謝謝。

下面是相關代碼:

public static readonly DependencyProperty KeyboardScrollRestrictionStyleProperty = 
     DependencyProperty.RegisterAttached("KeyboardScrollRestrictionStyle", typeof(KeyboardScrollRestrictionStyle), typeof(FlipViewScrollBehaviour), 
      new PropertyMetadata(KeyboardScrollRestrictionStyle.TextBox, OnKeyboardScrollRestrictionStyleChanged)); 

    static void OnKeyboardScrollRestrictionStyleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     //I check e.NewValue at breakpoint 
    } 

此作品(e.NewValue是文本框):

<TemplatedControls:WatermarkTextBox  
Behaviours:FlipViewScrollBehaviour.KeyboardScrollRestrictionStyle="TextBox" 
/> 

這不(e.NewValue爲null):

<Style x:Key="TimesheetLineListViewItemTextBox" TargetType="TextBox"> 
    <Setter Property="Behaviours:FlipViewScrollBehaviour.KeyboardScrollRestrictionStyle" Value="TextBox" /> 
</Style> 

回答

0

如果你在本地設置你的文本框中的附加屬性,然後嘗試用你的風格的Setter覆蓋它,這是唯一的情況下,我可以猜測哪些會阻止工作。例如 -

<TemplatedControls:WatermarkTextBox  
Behaviours:FlipViewScrollBehaviour.KeyboardScrollRestrictionStyle="TextBox" 
Style ="{StaticResource TimesheetLineListViewItemTextBox}"/> 

在這裏,你是在本地設置它,如果試圖在風格二傳手設置,它不會工作。請參考此鏈接 - Dependency Property Precedence Order

+0

感謝您的回答。可悲的是,這不是問題,因爲所有使用這種風格的控件都沒有明確設置,但問題仍然存在。 – ashleym