Как удостовериться, что мой WPF TabControl всегда имеет выбранную вкладку, когда он содержит по крайней мере одну вкладку?

Я делаю это для своих приложений .NET.

На моей общей _Layout.cshtml странице я добавляю это.

@{
    var isMobileDevice = HttpContext.Current.Request.Browser.IsMobileDevice;
}

<html lang="en" class="@((isMobileDevice)?"ismobiledevice":"")">

Затем, чтобы проверить на любой странице вашего сайта (jQuery):

<script>
var isMobile = $('html').hasClass('ismobiledevice');
</script>
11
задан Keavon 22 May 2014 в 04:53
поделиться

4 ответа

Может быть более простой способ, но вы можете привязать событие изменения коллекции к ObservableCollection в вашей виртуальной машине и установить для свойства SelectedItem новый элемент (при условии, что выбранный элемент привязан к собственность на ВМ).

12
ответ дан 3 December 2019 в 06:46
поделиться

В платформе .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.

4
ответ дан 3 December 2019 в 06:46
поделиться

Если вы ищете чистую реализацию MVVM, добавьте свойство Index в ViewModel, а в CollectionChanged вы можете установить Index = 0, если внутри нет элементов. И в XAML вы можете привязать этот индекс, как показано ниже

<TabControl ItemsSource="{Binding MyObservableCollection}" SelectedIndex="{Binding Index}" />
2
ответ дан 3 December 2019 в 06:46
поделиться

лучше всего перезаписать функцию «OnTabAdded», чтобы проверить, добавлен ли новый (первый), а затем установить для SelectedItemIndex значение 0;

поскольку вы используя ObservableCollection, вы знаете, когда ваша коллекция изменяется, поэтому я подписываюсь на измененное событие из коллекции и проверяю количество элементов в ней.

0
ответ дан 3 December 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: