2012-10-09 107 views
1

我正在步行穿過Windows應用商店示例應用程序XAML Twitter客戶端1,以在我自己的應用程序中獲得相同的功能。但我無法在1到1個樣本頁面中獲得綁定工作。Windows 8中的XAML模板綁定

這是我顯示的朋友電網:

<GridView x:Name="FriendsGrid" 
        Grid.Row="2" 
        Grid.Column="1" 
        HorizontalAlignment="Left" 
        VerticalAlignment="Top" 
        Margin="10,10,0,0" 
        ItemsSource="{Binding Friends}" 
        ItemTemplate="{StaticResource FriendItemTemplate}" 
        Grid.ColumnSpan="2"> 
     <GridView.DataContext> 
      <Model:FriendsViewModel/> 
     </GridView.DataContext> 

模板結合:

<Page.Resources> 
    <DataTemplate x:Key="FriendItemTemplate"> 
     <Grid Height="200" Width="300"> 
      <Grid.RowDefinitions> 
       <RowDefinition/> 
       <RowDefinition/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition/> 
       <ColumnDefinition/> 
      </Grid.ColumnDefinitions> 

      <Image HorizontalAlignment="Left" 
         Height="80" Width="130" 
         Margin="10,10,0,0" 
         VerticalAlignment="Top" 
         Source="{Binding RealPhoto}" 
         Stretch="UniformToFill"/> 

      <TextBlock Grid.Column="1" 
          HorizontalAlignment="Left" 
          Margin="10,10,0,0" 
          TextWrapping="Wrap" 
          VerticalAlignment="Top" 
          Height="80" 
          Width="130" 
          Text="{Binding FirstName}"/> 

      <TextBlock HorizontalAlignment="Left" 
          Margin="10,10,0,0" 
          Grid.Row="1" 
          TextWrapping="Wrap" 
          Text="{Binding LastName}" 
          VerticalAlignment="Top" 
          Width="280" Height="80" 
          Grid.ColumnSpan="2" /> 
     </Grid> 
    </DataTemplate> 
</Page.Resources> 

在我的代碼隱藏文件:

private FriendsViewModel _model; 

    public MyPage() 
    { 
     this.InitializeComponent(); 
     _model = new FriendsViewModel(); 

     FriendsGrid.DataContext = _model; 
    } 

比我填充模式,應用程序我看到完全相同的項目計數,我已添加,但項目是空的。使用調試我看到,該模型不是空的。 另外,當我在模板中硬編碼值時,它們是可見的。

Test project on GitHub

+1

您是否實施了INotifyPropertyChanged? – mydogisbox

+0

FriendsGridViewModel具有ObservableCollection屬性,因此它實現了屬性已更改的事件。但是...你幫我找到了錯誤: 在我的模型中忘了添加getters和setters:(( –

回答

1

我忘了getter和setter添加到我的模型的性能。最初我有這樣的:

public double Uid; 

比我添加{get;設置;}

[DataContract] 
public class Friend 
{ 
    [DataMember(Name = "uid")] 
    public double Uid { get; set; } 

    [DataMember(Name="first_name")] 
    public string FirstName { get; set; } 

    [DataMember(Name="last_name")] 
    public string LastName { get; set; } 

    [DataMember(Name="online")] 
    public bool Online { get; set; } 

    [DataMember(Name = "photo")] 
    public string Photo { get; set; } 

    public ImageSource RealPhoto { get; set; } 
} 
+0

我加了我的評論作爲答案。 – mydogisbox

0

要查看您的視圖模型的變化,你需要實現INotifyPropertyChanged。如果某個屬性的值發生更改,則這樣做的一部分是在屬性上調用NotifyPropertyChanged