Как я могу изменить изображение в заголовках TabItem моего TabControl, когда вкладка выбрана? - PullRequest
2 голосов
/ 08 января 2012

У меня есть следующее TabControl в окне, и мне нужно изменить изображения на «awb-white.png» и «center-weighted-white.png», соответственно, когда выбраны эти вкладки.(И обратно к -белому, когда они не выбраны).Какой лучший способ пойти по этому поводу?Можно ли это сделать в XAML?

<Window x:Class="WpfApplication6.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <TabControl>
        <TabItem>
            <TabItem.Header>
                <Image Source="images/awb-black.png" Stretch="None" />
            </TabItem.Header>
            <Grid />
        </TabItem>
        <TabItem>
            <TabItem.Header>
                <Image Source="images/center-weighted-black.png" Stretch="None" />
            </TabItem.Header>
            <Grid />
        </TabItem>
    </TabControl>
</Window>

Я новичок в WPF, поэтому подробности очень помогут.

1 Ответ

2 голосов
/ 08 января 2012

Используйте Style с установщиком по умолчанию для заголовка, добавьте Trigger к IsSelected и создайте еще один установщик для нового заголовка.

<TabItem>
    <TabItem.Style>
         <Style TargetType="TabItem">
              <Setter Property="Header">
                  <Setter.Value>
                      <Image ...>
                  </Setter.Value>
              </Setter>
              <Style.Triggers>
                  <Trigger Property="IsSelected" Value="True">
                      <Setter Property="Header">
                          <Setter.Value>
                              <Image ...>
                          </Setter.Value>
                      </Setter>
                  </Trigger>
              </Style.Triggers>
         </Style>
    </TabItem.Style>
</TabItem>

Поскольку это довольно многословно, вы можетехотите наследовать от TabItem и поместить его в шаблон по умолчанию , где Image.Sources являются привязанными к двум пользовательским свойствам, тогда вам просто нужно установить их в своих экземплярах.

Также обратите внимание, что тот факт, что значение по умолчанию находится в установщике, является важным из-за приоритета , если вы установите его непосредственно, триггер не переопределит это значение.

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