【问题标题】:WinUI 3 XAML DataTemplate - how to include a control exposed by the class used for bindingWinUI 3 XAML DataTemplate - 如何包含由用于绑定的类公开的控件
【发布时间】: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


    【解决方案1】:

    使用绑定到Grid 属性的ContentControl

    <ContentControl Content="{x:Bind MyGrid}" />
    

    【讨论】:

      猜你喜欢
      • 2022-10-19
      • 2022-10-09
      • 2023-02-25
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      相关资源
      最近更新 更多