2016-06-13 101 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