我用的是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
成为对象类型?你会在代码中设置它的值吗?