MVVM открывает новое рабочее пространство из другого рабочего пространства (вместо главной панели управления) - PullRequest
1 голос
/ 29 июня 2009

Я изучаю MVVM, используя образец, созданный Джошем Смитом в http://msdn.microsoft.com/en-us/magazine/dd419663.aspx Я хотел добавить функционал обновления в существующий код,

Например, когда пользователь видит данные в таблице «Все клиенты», пользователь может редактировать конкретную запись, дважды щелкнув ее, двойной щелчок откроет новую вкладку (та же модель представления / представления, которая используется для нового клиента). Я понятия не имею, как это сделать, нужно ли мне вызывать это через mainwindowviewmodel или есть какой-то другой способ.

Спасибо всем и счастливого программирования

Гаурав Джоши

1 Ответ

1 голос
/ 29 июня 2009

Это немного запутанно, поэтому давайте рассмотрим это по одному:

Первое, что вам нужно сделать, это сообщить View Model, какой элемент выбран. Для этого вам необходимо добавить свойство IsSelected в Customer

public bool IsSelected { get; set; }

(Редактировать: как мне было указано, класс CustomerViewModel уже обладает этим свойством, поэтому вышеупомянутое не является необходимым для этого конкретного проекта - хотя оно в общем случае.)

Затем необходимо привязать свойство IsSelected к элементам в ListView. Один из способов сделать это - использовать стиль, ориентированный на клиента. Примерно так:

<Style x:Key="CustomerListStyle" TargetType="{x:Type ListViewItem}">
    <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
</Style>

Затем назначьте этот стиль, используя ItemContainerStyle объекта ListView:

<ListView ItemContainerStyle="{StaticResource CustomerListStyle}" ...>

Чтобы иметь возможность редактировать выбранного клиента, вы должны добавить команду EditCostumer в AllCustomersViewModel. Реализуйте эту Команду, используя RelayCommand, чтобы показать представление редактирования для выбранного элемента.

Вы можете использовать LINQ, чтобы найти клиента с IsSelected == true.

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