Xaml DataTemplate中ViewMode的WinRT绑定数据
我想将数据绑定到存储在ViewModel中的DataTemplate中。我尝试了几种方法,但都没有成功,WPF的解决方案在WinRT类的RelativeSource的AncestorType属性上似乎不起作用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
<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。在阅读方面,我建议查查杰里·尼克松