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 は null です):

<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 に答える