2016-01-29 3 views
0

я смотрел на многие вопросы/ответы, но не смогли найти то, что я точно искал,Wpf изменить цвет фона заголовка детандер только

Я пытаюсь изменить цвет фона заголовка расширителя только и не должны иметь тот же цвет для содержимого внутри расширителя. Предпочтительно в xaml, но решение vb.net было бы достаточно.

(Все комментарии и предложения будут полезны)

Если это повторяющееся вопрос пожалуйста направить меня к ответу и оставить вопрос открытым, чтобы помочь другим избежать того же вопроса в будущем!

Спасибо.

ответ

1

Я не уверен, является ли то, что вы точно ищете, но вы можете изменить цвет фона заголовка, просто сделать это:

<Expander VerticalAlignment="Center"> 
     <Expander.Header> 
      <Grid Background="LightBlue"> 
       <TextBlock Text="Expander Header"/> 
      </Grid> 
     </Expander.Header> 
     <StackPanel> 
      <TextBlock Text="Cotent"></TextBlock> 
     </StackPanel> 
    </Expander> 

enter image description here

Или вы можете изменить настройки по умолчанию Expander ' ев HeaderDataTemplate с помощью HeaderTemplate

<Window.Resources> 
    <DataTemplate x:Key="HeaderText"> 
     <Border Height="25" Background="LightBlue"> 
      <TextBlock Text="{Binding}" 
        Margin="4 0" 
        VerticalAlignment="Center" 
        Foreground="White" 
        FontSize="11" 
        FontWeight="Normal" 
        /> 
     </Border> 
    </DataTemplate> 

    <Style TargetType="{x:Type Expander}"> 
     <Setter Property="HeaderTemplate" Value="{StaticResource HeaderText}"/> 
    </Style> 
</Window.Resources> 


<Grid x:Name="LayoutRoot"> 
    <Expander VerticalAlignment="Center" Header="Expander Header">   
     <StackPanel> 
      <TextBlock Text="Cotent"></TextBlock> 
     </StackPanel> 
    </Expander> 
</Grid> 
+0

Великий ответ, верхнее решение работал отлично и это именно то, что я искал:) @SamTheDev –

0

У меня было много проблем с получением набора фона заголовка. Я нашел easiets weay, чтобы сделать это было просто сделать цветной прямоугольник и поместить его за расширитель. (Используйте отступа и высоту, чтобы сделать его пригодным)

<Rectangle Grid.Row="1" Grid.Column="0" Fill="LightBlue" Height="33" Margin="0,0,0,-35" /> 

или использовать границу, если вы хотите закругленные углы:

<Border CornerRadius="15" Height="33" Margin="0,0,0,-35" Background="LightBlue" /> 
Смежные вопросы