gpt4 book ai didi

c# - 绑定(bind)是否必须是可观察的集合,为什么这行不通?

转载 作者:行者123 更新时间:2023-11-30 22:28:34 26 4
gpt4 key购买 nike

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

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

另外,为什么下面的代码不起作用?在我看来应该如此。

C# 贡献者类

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

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

C# 项目绑定(bind)

            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>

如您所见,每个项目都有一个与之关联的红色矩形。我确信绑定(bind)可以正常工作,因为每当我更改列表中的贡献者数量时,都会出现正确数量的红色矩形。

有人有什么想法吗?

谢谢,丹尼。

最佳答案

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

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

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

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

关于c# - 绑定(bind)是否必须是可观察的集合,为什么这行不通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10728501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com