这份原稿.绑定已经按照约定绑定到方法上的按钮文本



我用的是Caliburn。Micro出色的基于约定的绑定,将按钮绑定到视图模型上的方法。事情是,我希望按钮的Content绑定到视图模型的string属性。

目前,我允许对方法使用约定绑定,对内容使用显式绑定。下面是一个例子:

例如:

<Button x:Name="Submit" Content="{Binding SubmitCaption}" />
public class MyViewModel : PropertyChangedBase
{
    public void Submit() {}
    public string SubmitCaption { get; set; } // Technically would raise PropertyChanged event
}

然而,我想知道是否有一种更优雅的方式来做到这一点?我正在考虑重写按钮的约定,这样它仍然将按钮动作绑定到一个方法,但将内容绑定到一个按约定命名的属性。

<Button x:Name="Submit" />
public class MyViewModel : PropertyChangedBase
{
    public void Submit() {}
    public string SubmitContent { get; set; } // Technically would raise PropertyChanged event
}

您可以自定义所有按钮的默认行为,但我认为您当前的方法对开发人员来说更加明确和明显,并且看起来并不特别讨厌。我建议你坚持你现有的。

如果您决定要Button内容多于字符串会发生什么?您是否使SubmitContent成为对象类型?你会在代码中设置它的值吗?

最新更新