0

在我们的 Metro 应用程序中,我有一个enum类型的附加属性。

将元素上的属性直接设置为 XAML 属性时,该值设置得很好,但是当Setter在样式中使用元素时,尽管设置了该属性,但它被设置为一个null值(即,e.NewValue在下面的代码中为 null)

为什么是这样?它引起了问题,显然不能转换为枚举类型。谢谢。

以下是相关代码:

    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 是 TextBox):

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

这不是(e.NewValue 为空):

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

1 回答 1

0

如果您在本地设置 textBox 中的附加属性,然后尝试用您的样式中的 Setter 覆盖它,这是我能猜到的唯一情况,这将阻止它工作。例如 -

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

在这里,您在本地设置它,如果尝试在样式设置器中设置,它将不起作用。请参阅此链接 -依赖属性优先顺序

于 2012-09-05T17:30:48.047 回答