Как исправить логику всплывающих кнопок - PullRequest
0 голосов
/ 20 марта 2020

У меня есть следующее всплывающее окно, где пользователь может ввести три поля, и когда они нажимают «ОК». Всплывающее окно должно просто исчезнуть. На данный момент, когда я нажимаю кнопку ОК, ничего не происходит, всплывающее окно просто остается там, то же самое происходит, когда я нажимаю кнопку «Отмена», ничего не происходит. Чего мне не хватает, что при нажатии кнопки «ОК» она не исчезает? Почему кнопки ничего не делают, когда я нажимаю на них?

РЕДАКТИРОВАТЬ: После установки точки останова на моей кнопке ok кнопки logi c я получаю удар, однако я думаю, что мой главный вопрос здесь заключается в том, есть ли способ закрыть всплывающее окно после нажатия кнопки ОК, следовательно, пользователь завершил ввод данных.

Что касается кнопки отмены, она не срабатывает, когда точка останова при нажав на кнопку.

enter image description here

КОД XAML

 <Border Grid.Column="0" Margin="5"
                        Grid.Row="2">
                    <WrapPanel HorizontalAlignment="Right">

                        <Button x:Name="btnCancel" Command="{Binding Path=CloseCommand}"
                                     Content="_Cancel" Margin="4,2"  MinWidth="60"/>

                        <Button x:Name="btnOk" Command="{Binding Path=OKCommand}"
                                     Content="_OK" Margin="4,2"  MinWidth="60"/>
                    </WrapPanel>
                </Border>

Код модели представления

public event CancelHandler OnCancel;
public delegate void CancelHandler();

public ICommand CancelCommand
{
    get { return new RelayCommand(c => OnCancelLock()); }
}

public ICommand OKCommand
{
    get { return new RelayCommand(c => OnOKLock()); }
}


    protected void OnOKLock()
{

    var currentSetting = AppSession.Repository.Settings.Find(SettingQuery.ID == new ID("LockedOutDate"));
    currentSetting[0].Value = LockedOutDate;
    AppSession.Repository.Settings.Save(currentSetting[0]);

    currentSetting = AppSession.Repository.Settings.Find(SettingQuery.ID == new ID("LockedOutBy"));
    currentSetting[0].Value = LockedOutBy;
    AppSession.Repository.Settings.Save(currentSetting[0]);

    currentSetting = AppSession.Repository.Settings.Find(SettingQuery.ID == new ID("LockedOutFor"));
    currentSetting[0].Value = LockedOutFor;
    AppSession.Repository.Settings.Save(currentSetting[0]);

    currentSetting = AppSession.Repository.Settings.Find(SettingQuery.ID == new ID("IsUsersLockedOut"));
    currentSetting[0].Value = "1"; 
    AppSession.Repository.Settings.Save(currentSetting[0]);

}

protected void OnCancelLock()
{
   OnCancel();
}

1 Ответ

1 голос
/ 20 марта 2020

Ваша проблема прямо здесь:

 <Button x:Name="btnCancel" Command="{Binding Path=CloseCommand}"
                                 Content="_Cancel" Margin="4,2"  MinWidth="60"/>

Вы определили свою привязку как CloseCommand, но в своем коде ViewModel вы написали:

public ICommand CancelCommand
{
  get { return new RelayCommand(c => OnCancelLock()); } 
}

Так что либо измените его на CloseCommand в вашей ViewModel или CancelCommand в вашем XAML-файле.

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