Ich habe eine Pivot
, wo ich die Überschrift in meinem Pivot.HeaderTemplate
setzen, es ist im Grunde nur Names
von Books. In meinem Pivot.ItemTemplate
möchte ich einen Grid
zeigen, der in meinem .xaml.cs gebaut wird, aber seit dem Grid
ist in meinem DataTemplate
kann ich auf den Grid x:Name
nicht mehr im Code hinter in .xaml.cs zugreifen. books
ist eine Sammlung von Büchern, die eine Name
und Title
UWP Grid in Datatemplate
MainPage.xaml
<Pivot ItemsSource="{x:Bind books}">
<Pivot.HeaderTemplate>
<DataTemplate x:DataType="local:Book">
<TextBlock Text="{x:Bind Name}"/>
</DataTemplate>
</Pivot.HeaderTemplate>
<Pivot.ItemTemplate>
<DataTemplate>
<Grid
x:Name="BooksGrid"
BorderBrush="Black" BorderThickness="1 1 0 0"
Margin="0 10 0 0>
</Grid>
</DataTemplate>
</Pivot.ItemTemplate>
Jetzt habe ich zu den acces wollen BooksGrid
Iny der Code hinter und erstellen Sie tatsächlich die Grid
enthält MainPage.xaml.cs
public MainPage()
{
this.InitializeComponent();
}
private void DrawGrid()
{
//create columns of Grid
for (int i = 0; i < booksize.XProperties.Count + 1; i++)
{
BooksGrid.ColumnDefinitions.Add(new ColumnDefinition
{
});
}
BooksGrid.ColumnDefinitions[0].Width = GridLength.Auto;
}
....
Bereits hier bei BooksGrid.ColumnDefinitions.Add(...)
bekomme ich den Fehler, dass BooksGrid
nicht gefunden werden kann. Meine DrawGrid
funktioniert, wenn ich die Grid
Definition in meinem DataTemplate
und auch außerhalb meiner Pivot
nicht platzieren. So ist die MainPage.xaml.cs
findet es nicht, wenn die Grid
innen ist mein DataTemplate
ich gelesen habe, dass die Lösung könnte sein, dass ich die Grid instance
zu den acces, die ich mit arbeiten wollen, sobald die DataTemplate
geladen wird. Aber ich weiß auch nicht, wie ich das machen soll.
Editierteil zur ersten Lösung:
Ich bin auch in einem anderen Verfahren unter Verwendung von BooksGrid
MainPage.xaml.cs
private void DrawBooksFront(Front front)
{
int row;
int column;
column = booksize.XProperties.IndexOf(front.CustomProps[booksize.XLabel])+1;
row = booksize.YProperties.IndexOf(front.CustomProps[booksize.YLabel])+1;
Frame newFrame = new Frame();
TaskBoardGrid.Children.Add(newFrame);
Grid.SetColumn(newFrame, column);
Grid.SetRow(newFrame, row);
}
Sie sollten nicht die DateTemplate finden und Sie sollten verwenden Usercontrol – lindexi