Как закрыть OpenFileDialog с помощью функций ok и отменить в шаблоне MVVM silverlight? - PullRequest
0 голосов
/ 27 декабря 2011

Я видел много различной информации по этой теме, но ничего не помогло мне.

  1. Как ты думаешь? Возможно, лучше использовать более простой шаблон, чем MVVM с OpenFileDialog?
  2. У меня есть 2 функции Ok и Cancel. Каждый имеет (this.DialogResult = true) или (this.DialogResult = false). Я должен сделать это в шаблоне MVVM. Я сейчас использую value -> (bool cls = true) и привязываю его к DialogResult = {Binding cls} и изменяю это свойство в разных функциях, но оно не работает. Я получаю некоторые исключения.

Знаете ли вы, как я могу решить эту проблему с закрытием OpenFileDialog?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2011

Если вы пользуетесь кнопками OK и ОТМЕНА всегда независимо от состояния, я не вижу особой ценности в их включении в шаблон проектирования MVVM.Я не делаю silverlight, но предполагая, что он похож на WPF, вы можете проверить свойство IsCancel на панели «Свойства» для кнопки «Отмена», и это автоматически закроет диалоговое окно и установит DialogResult = false при нажатии кнопки.Для вашей кнопки ОК добавьте что-то простое, как это

    <Button ...Your normal settings here and then...
            Click="DoneButtonClickHandler">

Затем в коде позади.

    private void DoneButtonClickHandler(object sender, RoutedEventArgs e)
    {
        DialogResult = true;
    }

Я знаю, что некоторые пуристы ничего не хотят в коде позади, но для меня, более простой, более понятныйКод лучше (и смысл реализации MVVM).Теперь, если мои кнопки «ОК» и «Отмена» включены только при определенных условиях модели, я бы, вероятно, настроил их для взаимодействия с ModelView.

0 голосов
/ 27 декабря 2011

создать как метод здесь это то, что может привести вас в соответствие с тем, что вы ищете

    void OpenDialogAction(object param)
    {
        //Add code here
        OpenFileDialog d = new OpenFileDialog();


        if (d.ShowDialog() == true)
        {
            //set your variable true
        }
        else
        {
            //set your variable false
        }
    }
...