2015-04-23 32 views
0

在XAML中,如何將DataContext綁定到整體Page's類,以便我可以訪問自己的屬性?綁定到自我類

這意味着如果我有以下XAML:

<Page 
    x:Class="EasyWalk.UI.DetailPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:EasyWalk.UI" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" DataContext="{Binding RelativeSource={RelativeSource Self}}"> <!--This doesnt work--> 
    </Grid> 
</Page> 

如何綁定該網格相同的DetailPage的XAML使用(綁定到自己的類)?我希望能夠訪問XAML中該類的成員(本身)。

含義,我希望能夠訪問的DetailPageTestString成員:

public sealed partial class DetailPage: Page 
    { 
     private string testString; 

     public String TestString 
     { 
      get { return this.testString; } 
     } 

     public EWRODetailPage() 
     { 
      this.InitializeComponent(); 
     } 

    } 

某處在我的XAML這樣的:

<TextBox Text = "{Binding TestString}"/> 

我怎樣才能做到這一點?

+0

雖然這是可能的,但我強烈建議您創建一個單獨的類作爲視圖模型並將其綁定爲數據上下文。以下是對您不熟悉的MVVM模式的概述。 https://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx –

回答

2

只需要用什麼也沒有綁定在它:

DataContext="{Binding }" 

或者,你可以使用一段表示「自我」的綁定:

DataContext="{Binding .}" 

的MSDN頁文件這兩個上Binding.Path文檔。

1

集的DataContext在後面的代碼

public sealed partial class DetailPage: Page 
{ 
    private string testString; 

    public String TestString 
    { 
     get { return this.testString; } 
    } 

    public EWRODetailPage() 
    { 
     this.InitializeComponent(); 
     DataContext = this; 
    }  
} 

並刪除這一行:DataContext="{Binding RelativeSource={RelativeSource Self}}"

請注意:DetailPage類未實現INotifyPropertyChanged,所以如果你改變的TestString值UI將不會更新