2015-01-09 53 views
0

的屬性我已經做了一個簡單的應用程序來研究綁定過程。這裏是我的代碼:Windows Phone應用程序:綁定到頁面

MainPage.xaml中

<phone:PhoneApplicationPage 
    x:Class="PhoneApp1.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    DataContext="{Binding RelativeSource={RelativeSource Self}}" 
    x:Name="thisPage"> 

    <StackPanel x:Name="LayoutRoot" Background="Transparent"> 
     <TextBlock 
      Text="{Binding Path=TestText}"/> 
     <TextBlock 
      Text="Saparator"/> 
     <TextBlock 
      Text="{Binding ElementName=thisPage, Path=DataContext.TestText}"/> 
    </StackPanel> 

</phone:PhoneApplicationPage> 

MainPage.xaml.cs中

using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Navigation; 
using Microsoft.Phone.Controls; 
using Microsoft.Phone.Shell; 
using PhoneApp1.Resources; 

namespace PhoneApp1 
{ 
    public partial class MainPage : PhoneApplicationPage 
    { 
     public string TestText; 

     public MainPage() 
     { 
      InitializeComponent(); 

      TestText = "It works!"; 
     } 
    } 
} 

正如你看到我嘗試綁定的TextBlock的Text屬性兩種方式控制炫魅廣東的財產。 Whene我試圖運行這個應用程序,我看到沒有文字既不在第1 TextBlock也不在第三個TextBlock。

我在做什麼錯?

謝謝!

回答

1

嘗試更換現場public string TestText;財產public string TestText {get;set;}

+0

太容易了!兩種方式都有效。非常感謝! – proudbird

0

綁定只能與公共性質的工作就像public string TestText { get; set; } 但只補充說,不會的幫助,你MainPage將必須實現INotifyPropertyChanged接口(how to),你將不得不改變你的公共財產有點這個:

private string _textBackingField; 

public string TestText 
{ 
    get 
    { 
     return _textBackingField; 
    } 
    set 
    { 
     _textBackingField = value; 
     NotifyPropertyChanged(); 
    } 
} 
+0

你很可靠。如果我在加載頁面後嘗試設置TestText,它不起作用。好的,我會嘗試用你描述的方式解決這個問題。 – proudbird

+0

我所做的跟隨着變化: 公共部分類的MainPage:的PhoneApplicationPage,INotifyPropertyChanged的 並補充說: 公共事件PropertyChangedEventHandler的PropertyChanged; public void NotifyPropertyChanged(String propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if(null!= handler) {處理器(this,new PropertyChangedEventArgs(propertyName)); } } 現在它的工作原理是必須的! 非常感謝! – proudbird

相關問題