我有一个查询文本框和四个按钮的对话框。 根据查询的结果,启用一个或多个按钮。 文本框被绑定到VM的属性和每个按钮被绑定到命令在VM基于QueryResult中更改基于视图模型状态的默认按钮(IsDefault)
Command.IsEnabled变化
class ViewModel
{
public string Query {get;set;}
public QueryResult QueryResult {get;set;}
public ICommand FooCommand {get;set;}
public ICommand BarCommand {get;set;}
public ICommand BazCommand {get;set;}
public ICommand QuxCommand {get;set;}
}
<TextBox Text="{Binding Query, UpdateSourceTrigger=PropertyChanged}"/>
<Button Command="{Binding FooCommand}" Content="Foo"/>
<Button Command="{Binding BarCommand}" Content="Bar"/>
<Button Command="{Binding BazCommand}" Content="Baz"/>
<Button Command="{Binding QuxCommand}" Content="Qux"/>
有额外的逻辑来确定哪个启用按钮应该是默认的(当按回车时显然被高亮显示并且被激活)
(Foo总是启用的,如果QueryResult.A是非空的,则启用Bar,如果QueryResult.B非空,则启用Baz等。可以启用多个命令,但是具有确定的优先顺序的固定优先顺序网元进行默认操作)
酒吧>巴兹>美孚> Qux
我的问题是如何上的按钮Button.IsDefault结合,以反映一个应该是默认。
我想过下列选项 - 这两者都不似乎是正确
创建一个枚举属性{BTN1,BTN2,btn3,btn4} DefaultButton上的VM。绑定每个按钮ISDEFAULT属性,这与它的参数比较当前值
在VM IsButton1Default等创建四个布尔值转换器...并绑定到这些
一些与风格+ datatriggers但这使我的XAML难以理解。
你会做什么?