Ich versuche, mehrere PivotItems dynamisch im C# -Ende zu erstellen und dann für jedes PivotItem den Inhalt als GridView festzulegen, der eine Datatemplate enthält, in der Elemente dynamisch gebunden sind.Wie man eine GridView von PageResource zu einem PivotItem dynamisch in UWP hinzufügt?
XAML-Code:
<Page.Resources>
<GridView x:Key="pivoteItemGV"
Margin="18,10,0,0"
Background="#191919"
SelectionMode="None">
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
</Style>
</GridView.ItemContainerStyle>
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel MaxWidth="300">
<TextBlock x:Name="ItemNameTB" Text="{Binding ItemName}"/>
<TextBlock x:Name="ItemDescriptionTB" Text="{Binding ItemDescription}"
TextWrapping="WrapWholeWords"/>
<TextBlock x:Name="ItemPriceTB" Text="{Binding ItemPrice}" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Page.Resources>
Und auf der C# Ende
private void BindTheContentToPage()
{
foreach(var categoryItem in contentResourceDictionary)
{
PivotItem categoryPivotItem = new PivotItem();
categoryPivotItem.Header = categoryItem.Key;
GridView gv = this.Resources["pivoteItemGV"] as GridView;
categoryPivotItem.Content = gv;
categoryPivotItem.DataContext = categoryItem.Value;
mainContentPivot.Items.Add(categoryPivotItem);
}
}
Die App stürzt bei categoryPivotItem.Content = gv;
Wert besagt, fällt nicht innerhalb des erwarteten Bereichs.
Was mache ich richtig? Da ich nicht sicher bin, ob mehrere Kopien von Page.Resource-Inhalten vorliegen, wird GridView in diesem Fall dupliziert.
Vielen Dank für die Hilfe im Voraus.
Das ist, was ich suche. Aber es gibt hier ein Problem: Sie weisen der Inhaltsvorlage ein Datamaplate zu, aber es gibt keinen Inhalt, da mein category.value keine visuellen Elemente enthält. Versucht dieses, aber es zeigt nicht meine Inhalte an – AbsoluteSith
Vielleicht liegt das daran, dass Sie die ItemsSource Ihrer GridView nicht gesetzt haben. Wenn Ihr categoryItem.Value eine Liste von Datenobjekten ist, fügen Sie der GridView ein Attribut hinzu: ItemsSource = "{Binding}". Ich habe die Antwort mit dieser neuen Zeile bearbeitet – Artemious
Ja das war es! Danke für Ihre Hilfe! – AbsoluteSith