【发布时间】:2011-12-19 15:18:34
【问题描述】:
我有一个控件,它有一个属性的默认值。当控件第一次获取其 dataContext 集时,它会自动分配此属性。
现在在 xaml 中,我希望可以取消设置此属性。我尝试将其设置为 x:Null 的空字符串,但随后出现错误,因为该属性没有转换器。在我希望禁用该功能的极少数情况下,如何简单地从 xaml 取消分配此属性?
最初设置的代码:
void OmniBox_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if( e.NewValue is BindingObjectBaseExtended )
{
BindingObjectBaseExtended value = (BindingObjectBaseExtended)e.NewValue;
this.SetBinding(OmniBox.ContextValidationMessagesProperty, new Binding() { Source = value, Path = new PropertyPath("ValidationMessages") });
}
}
我想取消设置属性的xaml。
<Style TargetType="ui:OmniBox">
<Setter Property="ContextValidationMessages" Value="" />
</Style>
请注意,如果我没有在数据上下文更改时自动设置绑定,则默认情况下没有验证消息,我必须在 xaml 中执行以下操作来设置它们:
<Style TargetType="ui:OmniBox">
<Setter Property="ContextValidationMessages" Value="ValidationMessages" />
</Style>
我正在尝试将上述绑定设置为我的自定义 OmniBox 控件的默认设置,并允许用户取消设置或将其更改为其他内容。
【问题讨论】:
标签: c# wpf xaml binding .net-4.0