Не закрывайте окно, если проверка не пройдена - в WPF - PullRequest
1 голос
/ 01 апреля 2011

Я новичок в WPF и MVVM. У меня есть простое окно wpf, в котором я добавляю 2 значения. и я использую привязку команды в кнопку добавления.

вот мой код xaml для кнопки

<Button Content="OK" Name="btn_OK" Command="{Binding AddShutterType}" />

Эта команда написана в моей модели представления, а также я делаю некоторые проверки Но моя проблема в том, что если проверка не пройдена или не удалась, мое окно не закрывается !! Если я даю событие нажатия кнопки «this.close», оно всегда закрывается. Мое требование - сохранить окно, если проверка не пройдена, и закрыть, если проверка прошла успешно. Как это сделать?

Вот мой код модели представления, который содержит часть проверки.

    private ICommand _AddShutterType;

    public ICommand AddShutterType
    {
        get
        {
            if (_AddShutterType == null)
            {
                _AddShutterType = new DeligateCommand.DelegateCommand(delegate()
                {
                    ShutterNameToAdd.Trim();
                    ShutterCodeToAdd.Trim();

                    StringBuilder SB = new StringBuilder();
                    if (ShutterCodeToAdd == "")
                    {
                        SB.Remove(0, SB.Length);
                        SB.Append("Please type in a Code for the shutter.");
                        throw new ArgumentException(SB.ToString());
                    }

                    if (ShutterCodeToAdd.Length > 10)
                    {
                        SB.Remove(0, SB.Length);
                        SB.Append("Shutter type code size cannot be more than 5");
                        throw new ArgumentException(SB.ToString());
                    }

                    if (ShutterNameToAdd == "")
                    {
                        SB.Remove(0, SB.Length);
                        SB.Append("Please type in a Name for the shutter.");
                        throw new ArgumentException(SB.ToString());
                    }                      

                   Model.AddShutterType(ShutterCodeToAdd, ShutterNameToAdd);
                });
            }
            return _AddShutterType;
        }
    }

Пожалуйста, помогите мне ..

1 Ответ

0 голосов
/ 01 апреля 2011

Мое решение - сохранить ссылку на представление в виртуальной машине, но это будет интерфейс;

например.

public View : UserControl, IView
{
    void IView.Close()
    { 
        this.Close();
    }
}

public ViewModel
{
    public IView View{get;set;}

    public void CommandImpl()
    {
        if (Validated())
            View.Close();
    }
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...