在 Xaml 中封装重复的绑定参数

Encapsulating repetitive binding parameters in Xaml

我希望这是重复的,但我似乎让搜索者阻止了...


在 WPF 表单中,我发现自己通过大量 cut/paste 重复指定一组一致的绑定参数,例如:-

<dxe:TextEdit EditValue="{Binding Name, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" />

...

<dxe:TextEdit EditValue="{Binding Days, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" />

什么是定义标记扩展(或等效但更合适的东西)的最干净的方法,它允许我删除样板并能够用例如替换它:

<dxe:TextEdit EditValue="{mine:EditorBinding Name}" />

...

<dxe:TextEdit EditValue="{mine:EditorBinding Days>" />

对于奖励积分,如果仍然能够在 5% 的必要情况下覆盖已建立的默认值,那将是很好的 [但如果一些小的东西可以用最少的麻烦干净地完成核心目标,那就会要么做得很好...]

您可以简单地创建派生的 Binding class,因为 Binding 已经派生自 MarkupExtension.

public class EditorBinding : Binding
{
    public EditorBinding()
    {
        UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
        ValidatesOnDataErrors = true;
        NotifyOnValidationError = true;
    }

    public EditorBinding(PropertyPath path)
        : this()
    {
        Path = path;
    }
}