uwp:如何在 x:DataType 之外的 DataTemplate 内绑定数据?

问题描述 投票:0回答:2

我有 MyPage.xaml 和 MyPage.xaml.cs 文件。 在 .xaml 文件中,我编写了如下数据模板:

        <DataTemplate x:Key="MyDataTemplate" x:DataType="local:MyClass">
            ...
            <TextBlock Text="{x:Bind name}" HorizontalAlignment="Left" TextWrapping="Wrap"/>
            ...
        </DataTemplate>

我可以正确绑定MyClass的name属性。 现在我需要绑定 .xaml.cs 文件的属性,但 DataTemplate 仅显示 MyClass 数据。如何绑定 .xaml.cs 页面中的数据?在 DataTemplate 之外(但在同一个 xaml 文件中),我可以看到 .xaml.cs 文件的任何属性。 我需要将对象列表绑定到组合框,如下所示:

<ComboBox ItemsSource="{x:Bind myList}" HorizontalAlignment="Left"></ComboBox>

但 myList 是一个 .xaml.cs 属性。 我想查看列表中对象的字符串名称属性。

谢谢您的帮助

c# uwp combobox bind
2个回答
2
投票

uwp:如何在 x:DataType 之外的 DataTemplate 内绑定数据?

为了方便您的使用,我们建议您使用

Binding
来代替
x:Bind
,您可以使用
Binding
ElementName
来访问当前根 DataContext。

例如

<Grid x:Name="GridRoot">
    <ListView ItemsSource="{Binding Items}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Name}" />
                    <ComboBox ItemsSource="{Binding ElementName=GridRoot, Path=DataContext.Options}" />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>

代码背后

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        this.DataContext = this;
    }
    public List<string> Options { get; set; } = new List<string>() {"One","Two","Three" };
    public List<Item> Items { get; set; } = new List<Item>() 
    { 
        new Item { Name = "HH" },
        new Item { Name = "ZZ" }, 
        new Item { Name = "MM" }
    };
}
public class Item
{
    public string Name { get; set; }
}

0
投票

如果您有多个嵌套控件(例如,多个嵌套网格),则应该测试“RootGrid”的多个级别。其中之一可以工作。 这是 UWP - 有时无法猜测所描述的正在工作。

© www.soinside.com 2019 - 2024. All rights reserved.