1

我正在浏览 Windows Store Sample Application XAML Twitter Client 1,以在我自己的应用程序中获得相同的功能。但我无法在 1 对 1 示例页面中进行绑定工作。

这是我显示朋友的网格:

  <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;
    }

比我填充模型,在应用程序中我看到我添加的项目数完全相同,但项目是空的。使用调试我看到,该模型不是空的。此外,当我在模板中硬编码值时,它们是可见的。

GitHub上的测试项目

4

2 回答 2

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; }
}
于 2012-10-09T20:09:57.620 回答
0

要查看视图模型中的更改,您需要实现INotifyPropertyChanged. NotifyPropertyChanged这样做的一部分是在其值更改时调用属性。

于 2012-10-09T20:19:13.490 回答