Как определить, какой View выполнил команду - PullRequest
0 голосов
/ 10 августа 2011

У меня есть представление с именем InformationView.xaml, и этот же вид повторно используется для отображения одной и той же информации из 3 разных источников (каждый вид имеет свой заголовок окна).Каждое представление имеет свой набор данных, один и тот же экземпляр одного типа ViewModel.В моем классе ViewModel у меня есть свойство ICommand, к которому привязана кнопка «Закрыть» внутри View.- Есть ли способ определить, кто был отправителем команды?(в частности, по заголовку окна).

Вот пример:

У меня есть класс представления со следующей кнопкой («Примечание: каждый вид будет иметь свой заголовок окна / отображать данные издругой источник - но используется тот же View)

<Button Width="75" Height="23" Margin="0,0,5,5" Content="Close" Command="{Binding CloseCommand}" />

У меня есть класс ViewModel со следующей командой

    public ICommand CloseCommand
    {
        get
        {
            if (this._closeCommand == null)
            {
                this._closeCommand = new RelayCommand(Command => this.OnClose());
            }     
            return _closeCommand;
        }
    }

Я ищу способ определить, какое окно выполненокоманда (у меня будет несколько экземпляров View, использующих одну и ту же ViewModel).

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Как насчет того, чтобы просто сделать метод Close() общедоступным, чтобы другие объекты могли указать, каким должно быть поведение закрытия?

Затем вы можете использовать его из других моделей представлений, например так:

InformationViewModel.Close += CloseMethod;

public CloseMethod(object sender, EventArgs e)
{
    // Implement close logic here
}
0 голосов
/ 10 августа 2011

Я не уверен, правильно ли я вас понимаю.Однако вы могли бы реализовать событие Unloaded.Установите точку останова внутри этого метода события и при достижении точки останова.Вы можете проверить свойство заголовка окна для этого представления.

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