Я делаю это для своих приложений .NET.
На моей общей _Layout.cshtml
странице я добавляю это.
@{
var isMobileDevice = HttpContext.Current.Request.Browser.IsMobileDevice;
}
<html lang="en" class="@((isMobileDevice)?"ismobiledevice":"")">
Затем, чтобы проверить на любой странице вашего сайта (jQuery):
<script>
var isMobile = $('html').hasClass('ismobiledevice');
</script>
Может быть более простой способ, но вы можете привязать событие изменения коллекции к ObservableCollection в вашей виртуальной машине и установить для свойства SelectedItem новый элемент (при условии, что выбранный элемент привязан к собственность на ВМ).
В платформе .NET используется регистр Паскаля. Итак,
XmlReader
предпочтительнее в средах Microsoft.
Я должен согласиться с AronVanAmmers, что это легче читать, чем альтернативу.
Ссылка: Рекомендации Microsoft по дизайну для разработчиков библиотек классов
// peopleCollection is an ObservableCollection<Person>
People peopleCollection = new People();
public Window1()
{
InitializeComponent();
// MyTabControl is an instance of TabControl
MyTabControl.ItemsSource = peopleCollection;
MyTabControl.ItemContainerGenerator.StatusChanged += new EventHandler(ItemContainerGenerator_StatusChanged);
}
void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
{
if((sender as ItemContainerGenerator).Status == System.Windows.Controls.Primitives.GeneratorStatus.ContainersGenerated && MyTabControl.SelectedIndex == -1)
{
MyTabControl.SelectedIndex = 0;
}
}
Существуют сторонние решения, в которых эта функциональность доступна «из коробки». RadTabControl Telerik выбирает первый элемент всякий раз, когда коллекция меняет свое состояние с пустого на «содержащее один элемент».
Попробуйте демо здесь: http: //demos.telerik.
Если вы ищете чистую реализацию MVVM, добавьте свойство Index в ViewModel, а в CollectionChanged вы можете установить Index = 0, если внутри нет элементов. И в XAML вы можете привязать этот индекс, как показано ниже
<TabControl ItemsSource="{Binding MyObservableCollection}" SelectedIndex="{Binding Index}" />
лучше всего перезаписать функцию «OnTabAdded», чтобы проверить, добавлен ли новый (первый), а затем установить для SelectedItemIndex значение 0;
поскольку вы используя ObservableCollection, вы знаете, когда ваша коллекция изменяется, поэтому я подписываюсь на измененное событие из коллекции и проверяю количество элементов в ней.