2012-11-26 158 views
2

我正在嘗試爲WP8做一個應用程序,但是我不知道數據綁定是如何工作的。我已經嘗試過例子後的例子,這看起來像他們幾乎完全一樣,但似乎沒有任何工作。基本上,配置文件類包含配置文件和圖標的名稱。我想在屏幕上顯示這些配置文件的列表,並在圖標右側顯示名稱。XAML DataTemplate數據綁定

當我在WP8手機模擬器中運行項目時,什麼也沒有顯示出來。如果我將DataTemplate中的元素(即Source和Text)的屬性更改爲絕對字符串,則它工作正常。

MainPage.xaml中:

<phone:PhoneApplicationPage ..> 

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid.Resources> 
     <DataTemplate x:Name="ProfileListTemplate"> 
      <StackPanel Margin="10"> 
       <Image Grid.Column="0" Width="50" Height="50" Source="{Binding ImageSource}" Stretch="Fill"/> 
      <TextBlock Grid.Column="1" Text="{Binding ProfileName}" Margin="10" HorizontalAlignment="Left" FontSize="36"/> 
      </StackPanel> 
     </DataTemplate> 
    </Grid.Resources> 
    <phone:LongListSelector x:Name="ProfilesList" Grid.Row="1" VerticalAlignment="Top" FontSize="36" Height="535" Margin="10,0,0,0" ItemTemplate="{StaticResource ProfileListTemplate}"/> 
</Grid> 

</phone:PhoneApplicationPage> 

MainPage.xaml.cs中:

namespace Profiles 
{ 
    public partial class MainPage : PhoneApplicationPage 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 

      ObservableCollection<Profile> ProfilesCollection = new ObservableCollection<Profile>(); 
      ProfilesCollection.Add(new Profile("Nighttime")); 
      ProfilesCollection.Add(new Profile("Work")); 
      ProfilesCollection.Add(new Profile("Home")); 
      ProfilesList.ItemsSource = ProfilesCollection; 
     } 
    } 
} 

「檔案」 類別:

namespace Profiles 
{ 
    class Profile 
    { 
     public string ProfileName = ""; 
     public string ImageSource = "/Resources/Delete.png"; 

     public Profile(string name) 
     { 
      ProfileName = name; 
     } 
    } 
} 

回答

2

試着改變ProfileNameImageSource從場到屬性。

class Profile 
{ 
    private const string DefaultImageSource = "/Resources/Delete.png"; 

    public string ProfileName { get; set; } 
    public string ImageSource {get; set; } 

    public Profile(string name) 
    { 
     ProfileName = name; 
     ImageSource = DefaultImageSource; 
    } 
} 
0

更改您的個人資料類是屬性,如下面...

public class Profile 
{ 
    string profileName = ""; 
    string imageSource = "/Resources/Delete.png"; 

    public string ProfileName 
    { 
     get 
     { 
      return profileName; 
     } 
     set 
     { 
      profileName = value; 
     } 
    } 
    public string ImageSource 
    { 
     get 
     { 
      return imageSource; 
     } 
     set 
     { 
      imageSource = value; 
     } 
    } 

    public Profile(string name) 
    { 
     ProfileName = name; 
    } 
} 

當你的邏輯變得更復雜,它是那麼比較瑣碎,以進一步增加的行爲,並執行INotifyPropertyChanged如果您需要跟蹤單個對象內的更改。