in XamlControlsGallery/ControlPages/ItemsRepeaterPage.xaml.cs [161:219]
private void RadioBtn_Click(object sender, SelectionChangedEventArgs e)
{
string itemTemplateKey = string.Empty;
var selected = (sender as Microsoft.UI.Xaml.Controls.RadioButtons).SelectedItem;
if(selected == null)
{
// No point in continuing if selected element is null
return;
}
var layoutKey = ((FrameworkElement)selected).Tag as string;
if (layoutKey.Equals(nameof(this.VerticalStackLayout))) // we used x:Name in the resources which both acts as the x:Key value and creates a member field by the same name
{
layout.Value = layoutKey;
itemTemplateKey = "HorizontalBarTemplate";
repeater.MaxWidth = MaxLength + 12;
SampleCodeLayout.Value = @"<muxc:StackLayout x:Name=""VerticalStackLayout"" Orientation=""Vertical"" Spacing=""8""/>";
SampleCodeDT.Value = @"<DataTemplate x:Key=""HorizontalBarTemplate"" x:DataType=""l:Bar"">
<Border Background=""{ThemeResource SystemChromeLowColor}"" Width=""{x:Bind MaxLength}"" >
<Rectangle Fill=""{ThemeResource SystemAccentColor}"" Width=""{x:Bind Length}""
Height=""24"" HorizontalAlignment=""Left""/>
</Border>
</DataTemplate>";
}
else if (layoutKey.Equals(nameof(this.HorizontalStackLayout)))
{
layout.Value = layoutKey;
itemTemplateKey = "VerticalBarTemplate";
repeater.MaxWidth = 6000;
SampleCodeLayout.Value = @"<muxc:StackLayout x:Name=""HorizontalStackLayout"" Orientation=""Horizontal"" Spacing=""8""/> ";
SampleCodeDT.Value = @"<DataTemplate x:Key=""VerticalBarTemplate"" x:DataType=""l:Bar"">
<Border Background=""{ThemeResource SystemChromeLowColor}"" Height=""{x:Bind MaxHeight}"">
<Rectangle Fill=""{ThemeResource SystemAccentColor}"" Height=""{x:Bind Height}""
Width=""48"" VerticalAlignment=""Top""/>
</Border>
</DataTemplate>";
}
else if (layoutKey.Equals(nameof(this.UniformGridLayout)))
{
layout.Value = layoutKey;
itemTemplateKey = "CircularTemplate";
repeater.MaxWidth = 540;
SampleCodeLayout.Value = @"<muxc:UniformGridLayout x:Name=""UniformGridLayout"" MinRowSpacing=""8"" MinColumnSpacing=""8""/>";
SampleCodeDT.Value = @"<DataTemplate x:Key=""CircularTemplate"" x:DataType=""l:Bar"">
<Grid>
<Ellipse Fill=""{ThemeResource SystemChromeLowColor}"" Height=""{x:Bind MaxDiameter}""
Width=""{x:Bind MaxDiameter}"" VerticalAlignment=""Center"" HorizontalAlignment=""Center""/>
<Ellipse Fill=""{ThemeResource SystemAccentColor}"" Height=""{x:Bind Diameter}""
Width=""{x:Bind Diameter}"" VerticalAlignment=""Center"" HorizontalAlignment=""Center""/>
</Grid>
</DataTemplate>";
}
repeater.Layout = Resources[layoutKey] as Microsoft.UI.Xaml.Controls.VirtualizingLayout;
repeater.ItemTemplate = Resources[itemTemplateKey] as DataTemplate;
repeater.ItemsSource = BarItems;
elementGenerator.Value = itemTemplateKey;
}