我需要绑定一个menuitem和一个按钮。菜单项是“开始模拟”。按下此菜单项后,模拟开始并检查菜单项。现在我已经给了一个额外的按钮' play'在工具栏中执行完全相同的功能。按下时,模拟开始,按钮变为禁用状态。我点击后可以查看菜单项,单击一下即可禁用播放按钮,但不知道如何链接两个按钮点击。
答案 0 :(得分:0)
如果您还没有将启动模拟的代码拉出到这样的单独方法中
private void StartSimulation()
{
...
}
然后为您的按钮和菜单项创建一个点击事件,并从中调用您的方法。
private void button_Click(object sender, RoutedEventArgs e)
{
StartSimulation();
...
}
private void menuItem_Click(object sender, RoutedEventArgs e)
{
StartSimulation();
...
}
要停用按钮,请使用
button.IsEnabled = false;
所以要在模拟运行时禁用它,只需在调用StartSimulation
然后调用
button.IsEnabled = true;
在仿真结束时重新启用它
private void button_Click(object sender, RoutedEventArgs e)
{
button.IsEnabled = false;
StartSimulation();
...
button.IsEnabled = true;
}
注意我已经假设您的意思是wpf,因为您已将问题标记为wpf。
修改
如果您想使用命令来执行此操作,您可能希望实现类似这样的ICommand
public class RelayCommand : ICommand
{
private Predicate<object> _canExecute;
private Action<object> _execute;
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
this._canExecute = canExecute;
this._execute = execute;
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public bool CanExecute(object parameter)
{
return _canExecute(parameter);
}
public void Execute(object parameter)
{
_execute(parameter);
}
}
然后你可以像这样使用它
在您的视图模型中
public ICommand MyCommand { get; set; }
在您的视图模型的构造函数
中MyCommand = new BaseCommand(_ =>
{
// Do your stuff here
});
然后,在您的视图中,将其绑定到您要使用命令的任何位置
<Button Content="Click Me" Command="{Binding MyCommand}"/>