2

在我看到的大多数教程中,作者使用的 Windows Phone 7 的 Silverlight 应用程序中的数据绑定和可观察集合。看来我的数据在绑定后不会改变,这完全有必要吗?为什么我不能只使用列表?

每种方法的优点和缺点是什么?:)

另外,为什么下面的代码不起作用?对我来说似乎应该如此。

C# 贡献者类

    public class Contributor
    {
          public string Name;
          public string RSSUrl;

          public Contributor(string name, string rssURL)
          {
                  Name = name;
                  RSSUrl = rssURL;
          }
    }

C# 项目绑定

            List<Contributor> people = new List<Contributor> { new Contributor("Danny", "www.dannybrown.com") };
        contributorsListBox.ItemsSource = people;

XAML

<!--Panorama item two-->
        <!--Use 'Orientation="Horizontal"' to enable a panel that lays out horizontally-->
        <controls:PanoramaItem Header="contributors">
            <!--Double line list with image placeholder and text wrapping-->
            <ListBox x:Name="contributorsListBox" Margin="0,0,-12,0" ItemsSource="{Binding}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                            <!--Replace rectangle with image-->
                            <Rectangle Height="100" Width="100" Fill="#FFE5001b" Margin="12,0,9,0"/>
                            <StackPanel Width="311">
                                <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" />
                                <TextBlock Text="{Binding RSSUrl}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </controls:PanoramaItem>

如您所见,每个 Item 都有一个与之关联的红色矩形。我确信绑定是有效的,因为每当我更改列表中的贡献者数量时,就会出现正确数量的红色矩形。

有人有想法么?

谢谢,丹尼。

4

1 回答 1

3

您的 Contributor 类需要具有属性,而不仅仅是公共字段。

public class Contributor
{
      public string Name { get; set; }
      public string RSSUrl { get; set; }

      public Contributor(string name, string rssURL)
      {
              Name = name;
              RSSUrl = rssURL;
      }
}

编辑:关于您的问题,ObservableCollections 仅在您的数据将要更改的地方(即您正在添加或删除记录)才需要。您确实可以绑定到 Lists 或 IEnumerables。

于 2012-05-23T22:02:26.033 回答