【发布时间】:2011-05-17 10:46:28
【问题描述】:
我可以将一个简单的“网格”绑定到一个可观察的集合吗?所以我有一个只有一列和几行的网格。这些行在运行时填充了一些超链接,这些超链接可以被删除/添加等。我不想编写函数来每次都从网格中添加/删除它们,而是更喜欢使用可观察的集合并让网格自行更新。一个简单的网格可以做到这一点吗?我试过了,但它甚至没有编译。
谢谢
[编辑] 已解决。标记的答案是正确的[/EDIT]
【问题讨论】:
我可以将一个简单的“网格”绑定到一个可观察的集合吗?所以我有一个只有一列和几行的网格。这些行在运行时填充了一些超链接,这些超链接可以被删除/添加等。我不想编写函数来每次都从网格中添加/删除它们,而是更喜欢使用可观察的集合并让网格自行更新。一个简单的网格可以做到这一点吗?我试过了,但它甚至没有编译。
谢谢
[编辑] 已解决。标记的答案是正确的[/EDIT]
【问题讨论】:
其他答案涵盖各种基础,但您的具体要求由ItemsControl 填写。您可能希望将其包含在 ScrollViewer 中,以防万一您的链接多于一次可以看到的链接。你会有这样的标记:-
<ScrollViewer>
<ItemsControl ItemsSource="{Binding MyObsCollectionOfUrlInfo">
<ItemsControl.ItemTemplate>
<DataTemplate>
<HyperLinkButton NavigateUri={Binding Uri} Content={Binding Title} />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
您的可观察集合将包含以下类型的对象列表:-
public class UrlInfo
{
public Uri Uri {get; set; }
public string Title {get; set; }
}
【讨论】:
Silverlight 不支持此功能。您有两个选择,要么使用DataGrid,要么使用以下代码,让您在ItemsControl 中使用Grid,这将实现您的目标。
http://www.scottlogic.co.uk/blog/colin/2010/11/using-a-grid-as-the-panel-for-an-itemscontrol/
【讨论】:
@ColinE 是正确的,您不能绑定到 Grid,但您可以将 ObservableCollection 绑定到 DataGrid 或 ItemsControl。
【讨论】: