/ / GridView, ItemTemplate, DataTemplate väzba v C # kód za - c #, windows, xaml, windows-runtime, win-universal-app

GridView, ItemTemplate, väzba DataTemplate v C # code za - c #, windows, xaml, windows-runtime, win-universal-app

Mám za sebou nasledujúce pracovné kódy XAML a C #:

 <Grid x:Name="MainGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<GridView ItemsSource="{Binding}">
<GridView.ItemTemplate>
<DataTemplate>
<Grid Height="100" Width="150">
<Grid.Background>
<SolidColorBrush Color="{Binding Color}"/>
</Grid.Background>
<StackPanel>
<StackPanel.Background>
<SolidColorBrush Color="{Binding Color}"/>
</StackPanel.Background>
<TextBlock FontSize="15" Margin="10" Text="{Binding Name}"/>
</StackPanel>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</Grid>

KÓD za:

public MainPage()
{
this.InitializeComponent();
var _Colors = typeof(Colors)
.GetRuntimeProperties()
.Select(x => new
{
Color = (Color)x.GetValue(null),
Name = x.Name
});
this.DataContext = _Colors;
}

To funguje dobre.

Ale chcem urobiť všetku časť XAML v kóde C #. Iba v XAML MainGrid tam bude, všetky jeho podriadené prvky a väzby musia byť urobené v kóde pozadu.

Skúsil som niečo také v MainPage_Loaded udalosť:

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
try
{
GridView gridView = new GridView()
{
ItemTemplate = new DataTemplate
{
//Don"t know what to add here
}
};

Grid grid = new Grid();
Binding bindingObject = new Binding();
bindingObject.Source = this;
grid.SetBinding(Grid.BackgroundProperty, bindingObject);

//...
// Don"t know how to add grid inside gridView in Code.
//...

MainGrid.Children.Add(gridView);
}
catch (Exception ex)
{

}
}

odpovede:

0 pre odpoveď č. 1

Najskôr by som vám rád odporučil nevytvárať prvky v kóde, pokiaľ na to nemáte skutočný dobrý dôvod.

Bez ohľadu na to, že šablóny položiek sú výrobnými objektmi pre ovládacie prvky (pre každú položku ste vytvorili novú množinu ovládacích prvkov). Používate FrameworkElementFactory modelovať podstrom a potom priradiť šablónu položky VisualTree vlastnosť.