WPF:定义绑定的默认值
Posted
技术标签:
【中文标题】WPF:定义绑定的默认值【英文标题】:WPF : Define binding's default 【发布时间】:2010-11-08 20:00:04 【问题描述】:在 WPF 中,我希望能够对默认情况下如何应用我的绑定进行模板化。
例如,我想写:
Text="Binding Path=PedigreeName"
但好像我输入了:
Text="Binding Path=PedigreeName, Mode=TwoWay, UpdateSourceTrigger=LostFocus, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True"
有什么想法吗?
谢谢,
帕特里克【问题讨论】:
【参考方案1】:使用采用 PropertyMetadata 的 DependencyProperty.Register 的重载之一。传递FrameworkPropertyMetadata 的实例并设置其属性。
public class Dog
public static readonly DependencyProperty PedigreeNameProperty =
DependencyProperty.Register("PedigreeName", typeof(string), typeof(Dog),
new FrameworkPropertyMetadata()
BindsTwoWayByDefault = true,
DefaultUpdateSourceTrigger = UpdateSourceTrigger.LostFocus
);
我没有立即看到设置 NotifyOnValidationError、ValidatesOnDataErrors 或 ValidatesOnExceptions 的默认值的方法,但我没有充分使用它来确定要查找的内容;他们可能在那里。
【讨论】:
谢谢,好主意,但在我的例子中,Dog 类是在一个商业模型项目中。我不想为这个项目添加对 System.Windows 的依赖。我正在寻找的解决方案是朝着那个方向,比如把 在 App.xaml 中,但没有找到任何匹配...再次感谢!【参考方案2】:除了 Joe White 的好答案之外,您还可以创建一个继承自 Binding 的类并设置您需要的默认属性值。例如:
public class TwoWayBinding : Binding
public TwoWayBinding()
Initialize();
public TwoWayBinding(string path)
: base(path)
Initialize();
private void Initialize()
this.Mode = BindingMode.TwoWay;
【讨论】:
谢谢,我最终以这种方式实现了它。 [代码] public class ValidationBinding : Binding public ValidationBinding() Initialize(); public ValidationBinding(string path) : base(path) Initialize(); private void Initialize() Mode = BindingMode.TwoWay; UpdateSourceTrigger = UpdateSourceTrigger.LostFocus; NotifyOnValidationError = true; ValidatesOnDataErrors = true; ValidatesOnExceptions = true; [/code] @vines:Text="my:TwoWayBinding Path=PedigreeName"
以上是关于WPF:定义绑定的默认值的主要内容,如果未能解决你的问题,请参考以下文章
WPF——TargetNullValue(如何在绑定空值显示默认字符)
wpf 现在textbox的默认值是8,程序运行起来,在界面上修改了并能保存修改后的默认值