Как изменить выбранную вкладку на Нажатии кнопки в WPF TabControl с Кнопками в Заголовке

Я использую созданный в error обработчик:

$("img").error(function () {
    $(this).unbind("error").attr("src", "broken.gif");
});

Редактирование: error() метод удерживается от использования в jquery 1.8 и выше. Вместо этого необходимо использовать .on("error") вместо этого:

$("img").on("error", function () {
    $(this).attr("src", "broken.gif");
});

10
задан Dave Clemmer 4 August 2011 в 21:12
поделиться

2 ответа

Мы можем сделать это, используя Маршрутизацию событий . RoutedEvents , например Click, всплывает вверх по дереву элементов, пока что-нибудь не обработает событие. Из-за этого вы фактически уже получаете событие Click на элементах вкладки, просто мы пока ничего не делаем с ним. Мы могли бы создать событие для обработки нажатия кнопки на элементах вкладки следующим образом:

<TabItem Content="Item 1 Content" ButtonBase.Click="TabItem_Click">

Однако нам пришлось бы установить это на каждой вкладке, поэтому вместо этого мы можем создать стиль для элементов вкладок в TabControl следующим образом:

<TabControl>
    <TabControl.ItemContainerStyle>
        <Style TargetType="{x:Type TabItem}">
            <EventSetter Event="ButtonBase.Click"
                         Handler="TabItem_Click" />
        </Style>
    </TabControl.ItemContainerStyle>
....
</TabControl>

Теперь в нашем обработчике событий мы можем выбрать вкладку, на которой щелкнули:

private void TabItem_Click(object sender, RoutedEventArgs e)
{
    Trace.WriteLine("TabItemClicked");
    ((TabItem)sender).IsSelected = true;
    e.Handled = true;
}
10
ответ дан 3 December 2019 в 22:38
поделиться

Я сейчас занимался RnD над вышеупомянутой проблемой и смог достичь вышеупомянутого другим способом, но все же было бы здорово, если бы вы могли помочь мне в том, что вы выполнили.

В событии selectionchanged listbox я просто изменил выбранный элемент tab control на тот, который мне нужен, т.е.

            Tbctrl.SelectedItem = (TabItem)Tbctrl.FindName("item2");

Здесь Tbctrl - имя tabcontrol, а item2 - имя элемента tabcontrol, который содержит текстовые поля, упомянутые выше.

Regards,

Dhaval

5
ответ дан 3 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

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