Другой способ. Это в основном имитирует событие SelectedTabChanged
в MVVM.
Он работает, связывая свойство Name
вкладки со свойством SelectedTabName
в модели представления, с которым вы можете делать все, что захотите (включая предотвращение изменения вкладки, устанавливая значение обратно в предыдущее значение).
ViewModel
public string _selectedTabName;
public string SelectedTabName
{
get { return _selectedTabName; }
set
{
if (_selectedTabName != value)
{
_selectedTabName = value;
RaisePropertyChanged("SelectedTabName");
if (SelectedTabName == "EVENTS" && EventsLoaded == false)
{
LoadEvents();
}
if (SelectedTabName == "MESSAGES" && MessagesLoaded == false)
{
LoadMessages();
}
}
}
}
XAML
<TabControl SelectedValuePath="Name" SelectedValue="{Binding SelectedTabName}">
<TabItem Header="Events" Name="EVENTS">
...
</TabItem>
<TabItem Header="Messages" Name="MESSAGES">
...
</TabItem>
</TabControl>