Xaml DataTemplate中ViewMode的WinRT绑定数据

Xaml DataTemplate中ViewMode的WinRT绑定数据,xaml,binding,windows-runtime,Xaml,Binding,Windows Runtime,我想将数据绑定到存储在ViewModel中的DataTemplate中。我尝试了几种方法,但都没有成功,WPF的解决方案在WinRT类的RelativeSource的AncestorType属性上似乎不起作用 <Page.DataContext> <local:ViewModel x:Name="ViewModel" /> </Page.DataContext> <StackPanel Background="{ThemeResource Ap

我想将数据绑定到存储在ViewModel中的DataTemplate中。我尝试了几种方法,但都没有成功,WPF的解决方案在WinRT类的RelativeSource的AncestorType属性上似乎不起作用

<Page.DataContext>
    <local:ViewModel x:Name="ViewModel" />
</Page.DataContext>

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ListView ItemsSource="{x:Bind ViewModel.names}">
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="local:mydatatype">
                <StackPanel>
                    <TextBlock Text="{Binding Name}"/>
                    <!--Here I want a TextBlock to show the number-->
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackPanel>

这是ViewModel

public class ViewModel
{
    public int Number = 42;
    public List<mydatatype> names = new List<mydatatype>();
    public ViewModel()
    {
        names.Add(new mydatatype("name1"));
        names.Add(new mydatatype("name2"));
    }
}

public class mydatatype
{
    public string Name { get; set; }
    public mydatatype(string name)
    {
        this.Name = name;
    }
}
公共类视图模型
{
公共整数=42;
公共列表名称=新列表();
公共视图模型()
{
name.Add(新的mydatatype(“name1”);
name.Add(新的mydatatype(“name2”);
}
}
公共类mydatatype
{
公共字符串名称{get;set;}
公共mydatatype(字符串名称)
{
this.Name=Name;
}
}

您可以访问其他对象的DataTemplate,方法是给它们一个名称,然后引用该名称。使用此技术,您应该能够访问其DataContext以直接绑定到viewmodel,甚至可以从DataTemplate中进行绑定

<Page x:Name="PageRoot">
<Page.DataContext>
    <local:ViewModel x:Name="ViewModel" />
</Page.DataContext>

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" x:Name="MainPanel">
    <ListView ItemsSource="{x:Bind ViewModel.names}">
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="local:mydatatype">
                <StackPanel>
                    <TextBlock Text="{Binding Name}"/>
                    <TextBlock Text="{Binding DataContext.Name, ElementName=PageRoot}"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackPanel>
</Page>


请提供更多的代码。因为现在还没有足够的信息。例如,我在您的ViewModel中看不到“Name”,请检查@AlexejSommer我已经更新了ViewModel,很抱歉给您带来不便。@NotAGenie我已经检查了您发布的链接。我的问题不是绑定没有更新,我试图将它绑定到编译时可用的局部变量,所以没有这个问题。我想弄明白的是,如何将数据绑定到DataTemplate的DataType中找不到的DataTemplate中的属性(绑定到名称中没有的数字)。我现在不能在计算机上测试,所以可能不完美,但是试一下,然后我应该可以在以后编辑它。我尝试了几种组合,但似乎不起作用。您能给我介绍一些资源吗?我可以从中学习所有这些专门用于UWP的绑定相关内容。@NickThomsan我更新了示例,请尝试使用ElementName来引导属性查看与您设置基本页面元素相同的x:Name。在阅读方面,我建议查查杰里·尼克松