2015-02-13 7 views
0

Я пытаюсь добавить изображение к моему GroupBox Заголовок следующим образом:GroupBox.Header не работает

<GroupBox> 
    <GroupBox.Header> 
     <StackPanel Orientation="Horizontal"> 
      <Label Content="Test Box" /> 
      <Image Source="MyImage.jpg" />     
     </StackPanel> 
    </GroupBox.Header> 
    ..... 
    <!-- All my other code which I know works correctly --> 
    ..... 
<GroupBox> 

Однако то, что показывает на мою GroupBoxHeader является:

enter image description here

I см. этот способ изменения GroupBoxHeader во всем Интернете, когда я ищу, как это сделать, но я не могу заставить его работать. Я даже попытался удалить Image в случае, если возникла проблема, и он по-прежнему дает тот же результат.

Что я здесь делаю неправильно?

+0

это выглядит, как будто, в пользовательском шаблоне, вы используете 'TextBlock' вместо' ContentPresenter' для отображения содержимого заголовка – dkozl

ответ

0

После прочтения поста Ganesh я выполнил поиск стиля GroupBox и обнаружил, что в моем проекте был один, о котором я не знал. Стиль GroupBox был определен следующим образом:

<!-- GroupBox & GroupBox.Header Style --> 
<Style x:Key="GroupBoxStyle" TargetType="{x:Type GroupBox}"> 
    <Setter Property="Margin" Value="5" /> 
    <Setter Property="Padding" Value="5" /> 

    <Setter Property="HeaderTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <TextBlock Text="{Binding}" FontWeight="Bold"/> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<Style TargetType="{x:Type GroupBox}" 
     BasedOn="{StaticResource GroupBoxStyle}" /> 

Изменяя свой код на следующий я смог переопределить стиль по GroupBox умолчания:

<GroupBox> 
     <GroupBox.HeaderTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Label Content="Julius Caesar"/> 
        <Image Source="MyImage.jpg" /> 
       </StackPanel> 
      </DataTemplate> 
     </GroupBox.HeaderTemplate> 
     ...... 
1

Вы можете попробовать HeaderTemplate. См. Ниже код.

<GroupBox> 
      <GroupBox.HeaderTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <Label Content="Test Box" /> 
         <Image Source="MyImage.jpg" /> 
        </StackPanel> 
       </DataTemplate>      
      </GroupBox.HeaderTemplate> 
     </GroupBox> 
+0

Брайану не нужно это делать, то, что он пытается, должен работать. –

+0

@Steven .. Согласен. Но я чувствую, но это правильный способ сделать это. –

+0

Я использую headerTemplates все время, и они работают нормально, но выглядит Header тоже должен работать – Muds

0

Я создал новый проект WPF, используя шаблон Visual Studio по умолчанию, а затем вставить это в XAML как содержание Grid элемента:

<GroupBox> 
    <GroupBox.Header> 
     <StackPanel Orientation="Horizontal"> 
      <Label Content="Test Box" /> 
      <Rectangle Fill="Orange" Width="50" Height="20" /> 
     </StackPanel> 
    </GroupBox.Header> 
</GroupBox> 

Это используя Rectangle вместо изображения, но это сработало для меня.

Единственное, что я могу придумать, это то, что что-то изменило шаблон по умолчанию GroupBox. Возможно, попробуйте XAML выше в новом проекте и посмотрите, сможете ли вы заставить это работать?

Какую версию Windows вы используете? Я знаю, что шаблоны по умолчанию немного отличаются между версиями Windows. Вышеописанное было протестировано на Windows 7.