我可以简化这段代码吗?如果是这样的话

时间:2015-10-11 02:16:32

标签: c# simplification

我正在尝试向我的第一个MVVM程序添加多个命令。 但我在这里添加它们的方式对我来说是错误的。 我想尽量避免重复,我可以制作一种我可以轻松修改的父命令吗?

bool randbool = rand() & 1;

2 个答案:

答案 0 :(得分:7)

您是否正在寻找减少代码重复的基类?

如果是这样,这可能适合您:

internal abstract class TimerBarCommandBase : ICommand
{
    public TimerBarCommandBase(MainViewModel viewModel)
    {
        _MainViewModel = viewModel;
    }

    protected MainViewModel _MainViewModel;
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter) { return true; }

    public abstract void Execute(object parameter);
}

internal class AddTimerBarCommand : TimerBarCommandBase
{
    public AddTimerBarCommand(MainViewModel viewModel) : base(viewModel) { }

    public override void Execute(object parameter)
    {
        _MainViewModel.AddTimerBar();
    }
}

internal class RmvTimerBarCommand : TimerBarCommandBase
{
    public RmvTimerBarCommand(MainViewModel viewModel) : base(viewModel) { }

    public override void Execute(object parameter)
    {
        _MainViewModel.RmvTimerBar();
    }
}

答案 1 :(得分:0)

由于您要求一种优化代码的方法,因此Enigmativity给出了答案。

但是,在MVVM中,当使用ICommand时,通常我们使用在用于项目的MVVM框架中实现的RelayCommand

这是由MVVM Light开发人员Laurent Bugnion编写的tutorial。使用它,每次想要绑定命令时都不必创建新类,因此将尽可能地防止重复#34;。