这里我在模型中添加了一个布尔属性,并将其绑定到Combobox的Isenabled属性。并将命令绑定到我已添加了execute()方法的按钮,该方法将绑定的属性设置为组合框。但是这个改变是按钮的启用。有没有办法在btn点击时禁用组合框?
型号:
public class MyPanelModel : BindableBase
{
private bool _MessageVisibilty;
public bool MessageVisibilty
{
get
{
return _MessageVisibilty;
}
set
{
SetProperty(ref _MessageVisibilty, value);
}
}
}
查看型号:
private MyPanelModel plModel;
public MyPanelModel MyPnlModel
{
get { return plModel; }
set { SetProperty(ref plModel,value); }
}
private readonly DelegateCommand _hideCommand;
public DelegateCommand DisableOtherControlsCommand
{
get { return _hideCommand; }
}
public MyPanelViewModel()
{
_hideCommand = new DelegateCommand(hideExecute, canExecute);
_hideCommand.RaiseCanExecuteChanged();
}
private void hideExecute()
{
MyPnlModel.MessageVisibilty = false;
}
private bool canExecute()
{
return true;
}
Xaml:
<ComboBox Mandatory="True">
<i:Interaction.Triggers >
<i:EventTrigger EventName="IsEnabled">
<prism:InvokeCommandAction Command="{Binding MyPanelModel.MessageVisibilty,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
<Button Margin="10" Command="{Binding MyPanelViewModel.DisableOtherControlsCommand}" >Save</Button>
答案 0 :(得分:0)
如果你想使用MVVM,我们的想法是将你的按钮的IsEnable属性绑定到viewmodel中的布尔值。
如果您的viewmodel实现了INotifyPropertyChanged并且被设置为视图的datacontext,那么当您更新viewmodel中的boolean值时,绑定到boolean属性的控件应该是启用/禁用
如果您在单击按钮后更改布尔值,则只需创建一个Command并将按钮Command属性绑定在其上即可。在命令方法实现中,将布尔值设置为true / false,它将立即反映在ui的isenable属性上
对于Command创建,这是另一个可以帮助您的主题: How to bind WPF button to a command in ViewModelBase?