Триггер IsSelected = true для IsVisibleChanged без локальных стилей и кода позади (пример TabItem) - PullRequest
0 голосов
/ 18 октября 2011

Каков наилучший способ, если есть какой-либо, без кода позади, инициировать в одном TabItem (и изменить его IsSelected = true), когда видимость другого TabItem в том же TabControl изменилась? IsVisibleChanged не является RoutedEvent. И все мои элементы управления стилизованы из ресурсов, поэтому я должен всеми силами избегать установки локальных стилей (чтобы можно было использовать Datatriggers).

В настоящее время я могу думать об этом только в коде:

        private void TabItem1_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
        TabItem2.IsSelected = true;
    }

Спасибо!

1 Ответ

1 голос
/ 18 октября 2011

И все мои элементы управления стилизованы из ресурсов, поэтому я должен всеми силами избегать установки локальных стилей

Не очень хорошая причина (по крайней мере, когда эти ресурсы не изменяются во время выполнения)вы можете просто использовать BasedOn, например,

<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
    <!-- ... -->
</Style>

Кроме этого, вы можете использовать дополнительные инструменты, такие как интерактивность из Blend SDK , который позволяет запускать оба независимо отСтили и на все события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...