绑定是否必须是可观察的集合,为什么这不起作用
本文关键字:集合 为什么 不起作用 观察 是否 绑定 | 更新日期: 2023-09-27 18:35:13
在我看到的大多数教程中,作者都使用和可观察集合在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>
如您所见,每个项目都有一个与之关联的红色矩形。我相信绑定是有效的,因为每当我更改列表中的贡献者数量时,都会出现正确数量的红色矩形。
有人有什么想法吗?
谢谢丹尼。
参与者类需要具有属性,而不仅仅是公共字段。
public class Contributor
{
public string Name { get; set; }
public string RSSUrl { get; set; }
public Contributor(string name, string rssURL)
{
Name = name;
RSSUrl = rssURL;
}
}
编辑:关于您的问题,只有在您的数据将要更改(即您添加或删除记录)时才需要 ObservableCollections。您确实可以绑定到列表或 IEnumerables。