В моем приложении Silverlight у меня есть представление, содержащее элемент управления вкладкой и модель представления этого представления.Когда выбранная вкладка изменяется, мне нужно обновить ее данные.Чтобы сделать это в модели представления, я использую команду, запускаемую EventTrigger в представлении, и передаю ей соответствующие аргументы событий (как описано здесь http://weblogs.asp.net/alexeyzakharov/archive/2010/03/24/silverlight-commands-hacks-passing-eventargs-as-commandparameter-to-delegatecommand-triggered-by-eventtrigger.aspx). Каждый элемент вкладки имеет свою собственную модель представления и, следовательно,Чтобы определить, какую модель представления я должен использовать для обновления данных, я наблюдаю заголовок в элементе вкладки, который я могу получить из аргументов события, например:
_tabSelectionChangedCommand = new DelegateCommand<SelectionChangedEventArgs>(TabSelectionChanged);
public ICommand TabSelectionChangedCommand
{
get { return _tabSelectionChangedCommand; }
}
private void TabSelectionChanged(SelectionChangedEventArgs e)
{
var tabItem = (TabItem)e.e.AddedItems[0];
if (tabItem.Header == "Header1" )
{
TabItem1ViewModel.Refresh();
}
.....
}
Итак, мой вопрос: Хорошо, что я использую в модели представления типы, связанные с пользовательским интерфейсом (TabItem, SelectionChangedEventArgs), и есть ли лучшие способы сделать то, что я описал выше?