【发布时间】:2022-01-14 16:08:47
【问题描述】:
我有一个 WinUi 3 桌面应用程序。它包含一个名为“mainGrid”的网格控件。它包含一个 Grid.Resources 元素,如下所示:
<Grid.Resources>
<DataTemplate x:Key="HorizontalMobTemplate" x:DataType="local:Mob" >
<Grid>
<Rectangle Width="50" Height="50" Stroke="Black" StrokeThickness="2" Fill="AliceBlue"></Rectangle>
<TextBlock Text="{x:Bind Label}" FontSize="16" />
</Grid>
</DataTemplate>
<StackLayout x:Name="HorizontalStackLayout" Orientation="Horizontal" Spacing="8" />
</Grid.Resources>
在代码中,我有一个名为 Mob 的类,它具有各种属性,包括一个名为 Label 的字符串属性和一个名为 MyGrid 的 Microsoft.UI.Xaml.Controls.Grid 属性。
Grid 包含一个 ScrollViewer:
<ScrollViewer Name="ScrollViewer1" Grid.Row="2" Grid.Column="1"
HorizontalScrollBarVisibility="Auto"
IsVerticalScrollChainingEnabled="False"
MaxHeight="50">
<ItemsRepeater
ItemsSource="{x:Bind MobItems}"
Layout="{StaticResource HorizontalStackLayout}"
ItemTemplate="{StaticResource HorizontalMobTemplate}"
/>
</ScrollViewer>
到目前为止,一切都很好——滚动查看器在一个漂亮的水平滚动中继器中显示每个 Mob 对象的 Label 属性。但这并不是我真正想要的。我想插入对 Mob.MyGrid 属性的引用,该属性是 Microsoft.UI.Xaml.Controls.Grid。像这样的:
<Grid.Resources>
<DataTemplate x:Key="HorizontalMobTemplate" x:DataType="local:Mob" >
<PULL IN THE Mob.MyGrid PROPERTY HERE />
</DataTemplate>
<StackLayout x:Name="HorizontalStackLayout" Orientation="Horizontal" Spacing="8" />
</Grid.Resources>
换句话说,我希望我的 XAML 插入一个子元素,该子元素是我的 Mob.MyGrid 属性中公开的 MyGrid 控件。我需要什么语法来做到这一点?
【问题讨论】:
标签: xaml controls datatemplate winui-3