在我的Metro应用程序中,我有一个enum
类型的附加属性。
当直接将元素上的属性设置为XAML属性时,值设置得很好,但在样式中使用Setter
元素时,虽然设置了属性,但它设置为null
value(即下面代码中的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>
答案 0 :(得分:0)
如果你在本地的textBox中设置附加属性,然后尝试用你的风格中的Setter覆盖它,这是唯一可以猜到哪种情况会阻止它工作的情况。例如 -
<TemplatedControls:WatermarkTextBox
Behaviours:FlipViewScrollBehaviour.KeyboardScrollRestrictionStyle="TextBox"
Style ="{StaticResource TimesheetLineListViewItemTextBox}"/>
在这里你要在本地设置它,如果尝试设置样式设置器,它就不会工作。请参阅此链接 - Dependency Property Precedence Order