2016-06-13 95 views
2

我想绑定存储在ViewModel中的DataTemplate中的数据。我已经尝试了几种方法,但没有成功,WPF的解决方案似乎不能像WinSource的RelativeSource的AncestorType属性一样工作。WinRT在DataTemplate中绑定ViewMode的数据

<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> 

这里是视图模型

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; 
    } 
} 
+1

请提供更多代码。因为现在没有足够的信息。例如,我没有看到“名称”在您ViewModel –

+0

检查了这一点 http://stackoverflow.com/questions/33070705/with-compiled-bindings-xbind-why-do-i-have-to-call-绑定更新 – NotAGenie

+0

@AlexejSommer我更新了ViewModel,很抱歉造成了不便。 – NickThomsan

回答

0

您可以通过给他们一个名称,然后参考该访问其他对象的DataTemplate中。使用这种技术,您应该能够访问其DataContext直接绑定到视图模型,即使从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> 
+0

不是在我可以测试这个现在所以它可能不是完美的,但给它一个尝试,那么我应该可以在稍后编辑 – NotAGenie

+0

我试过几种组合电脑,但它不似乎工作。你能指导我从一些资源,我可以学习所有这些绑定相关的东西,特别是为UWP。 – NickThomsan

+0

@NickThomsan我更新的例子,请尝试使用的ElementName直接财产来看待相同的X:你命名你的基地页面元素设置。在阅读方面,我建议查找杰里尼克松 – NotAGenie