2017-09-29 2 views
-1

ich diesen Code habe:Datatemplate Bindung zeigt nichts

<GroupBox Style="{DynamicResource MaterialDesignCardGroupBox}" Grid.Row="0" Grid.Column="0" > 
    <Label Content="{Binding MatchController.Match.TeamHome}" /> 
    <GroupBox.HeaderTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Image Height="32" Width="32" Source="{Binding MatchController.Match.TeamHomeShield}" /> 
       <Label Content="{Binding MatchController.Match.TeamHome}" /> 
       <TextBlock Margin="8,0,0,0" VerticalAlignment="Center" Style="{StaticResource MaterialDesignSubheadingTextBlock}" Text="{Binding Match.TeamHome}"/> 
      </StackPanel> 
     </DataTemplate> 
    </GroupBox.HeaderTemplate> 
</GroupBox> 

Wie man sehen kann ich ein Header-Template mit einem Datatemplate in der GroupBox habe. Das Merkwürdige ist, dass das Label außerhalb der GroupBox den Wert von TeamHome korrekt anzeigt, aber innerhalb des StackPanels in der DataTemplate wird nichts angezeigt und die Bindung ist gleich, warum? Geheimnis des Lebens.

+0

Können Sie auch den MaterialDesignCardGroupBox-Stil anzeigen? – shadow32

+0

ist Material Design in XAML, können Sie es auf github Seite hier finden: https://github.com/ButchersBoy/MaterialDemoInXamlToolkit/blob/master/MainDemo.Wpf/GroupBoxes.xaml – Vandehusend

+0

Wie verhält es sich ohne die MaterialDesignCardGroupBox Stil angewendet? Und womit ist Ihre GroupBox umgeben? Ich vermute, es ist in einem anderen DataTemplate – shadow32

Antwort

0

Sie müssen Ihre GroupBox an eine Datenquelle binden, dann wird sie für die Vorlage verfügbar sein.

<GroupBox Style="{DynamicResource MaterialDesignCardGroupBox}" 
       Grid.Row="0" 
       Grid.Column="0" 
       DataContext="{Binding MatchController}"> 
     <Label Content="{Binding MatchController.Match.TeamHome}" /> 
     <GroupBox.HeaderTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Image Height="32" 
         Width="32" 
         Source="{Binding Match.TeamHomeShield}" /> 
        <Label Content="{Binding Match.TeamHome}" /> 
        <TextBlock Margin="8,0,0,0" 
          VerticalAlignment="Center" 
          Style="{StaticResource MaterialDesignSubheadingTextBlock}" 
          Text="{Binding Match.TeamHome}" /> 
       </StackPanel> 
      </DataTemplate> 
     </GroupBox.HeaderTemplate> 
     </GroupBox> 
+0

Datenquelleigenschaft nicht gefunden auf Groupbox-Objekt – Vandehusend

+0

Es ist ein Tippfehler, sollte DataContext sein – shadow32

+0

Gemeint Datenkontext. Antwort jetzt reparieren. – Marisa

0
<DataTemplate> 
          <StackPanel Orientation="Horizontal"> 
           <Image Height="32" Width="32" Source="{Binding MatchController.Match.TeamHomeShield}" /> 
           <Label Content="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext.MatchController.Match.TeamHome}" /> 
           <TextBlock Margin="8,0,0,0" VerticalAlignment="Center" Style="{StaticResource MaterialDesignSubheadingTextBlock}" Text="{Binding Match.TeamHome}"/> 
          </StackPanel> 
         </DataTemplate> 
        </GroupBox.HeaderTemplate> 

Wenn die Datacontext des Codes auf dem Fensterelement gesetzt ist, diesen Code verwenden. Andernfalls ändern Sie einfach den Typ des nächsten Elements mit diesem DataContext.

+0

, wo der Befehl platziert werden sollte gefunden? – Vandehusend

+0

Entschuldigung!

+0

Ich muss diesen ganzen Inhalt für jedes Steuerelement hinzufügen oder hinzufügen so etwas auf der groupbox? Weil Ihre Lösung funktioniert aber auch Code für jedes Steuerelement – Vandehusend