`

Silverlight 教程第五部分:用 ListBox 和 DataBinding 显示列表数据 (木野狐译)

阅读更多

【原文地址】Silverlight Tutorial Part 5: Using the ListBox and DataBinding to Display List Data
【原文发表日期】 Friday, February 22, 2008 5:51 AM

 

这是8个系列教程的第5部分,这个系列示范如何使用 Silverlight 2 的 Beta1 版本来创建一个简单的 Digg 客户端应用。这些教程请依次阅读,将有助于您理解 Silverlight 的一些核心编程概念。

用 ListBox 和 DataBinding 显示我们的 Digg 故事

前面我们使用了 DataGrid 控件来显示我们的 Digg 故事。当我们想用多列的格式来显示内容时,它很适合。然而对我们的 Digg 应用程序而言,也许我们想稍微改变一下页面的显示方式,让它看起来不太像网格,而更像一个列表。好消息是,这很容易实现 - 并且我们不需要改变任何程序代码。

首先我们将 DataGrid 控件替换为 <ListBox> 控件。我们保持原有的控件名称 ("StoriesList"):

 

重新运行一下程序,搜索故事,ListBox 会显示搜索结果如下:

你可能觉得奇怪 - 为什么每个条目都变成了 "DiggSample.DiggStory"? 这是因为我们把 DiggStory 对象绑定给了 ListBox(而绑定的默认行为会调用这些对象的 ToString() 方法)。如果我们想改用每个 DiggStory 对象的 Title 属性来显示条目,可以设置 ListBox 的 DisplayMemberPath 属性:

这样做之后的效果如下:

如果要每次显示不止一个值,或者定制每个条目的布局,我们可以覆盖 ListBox 控件的 ItemTemplate,并提供一个自定义的 DataTemplate. 然后在这个 DataTemplate 内,定制每个 DiggStory 对象如何显示。

例如,我们可以用 DataTemplate 同时显示 DiggStory 的 Title 和 NumDiggs 值,如下所示:

在 DataTemplate 中,我们可以绑定 DiggStory 对象中我们所需的任何公共属性。注意上面我们是如何用 {Binding 属性名} 语法,配合两个 TextBlock 控件来完成这一点的。

设置了上述 DataTemplate 后,我们的 ListBox 会显示如下:

让我们再进一步,修改 DataTemplate 的定义如下。其中使用了两个 StackPanel - 一个用于水平地堆叠行,另一个用来垂直地堆叠文本块(TextBlock)。

上述 DataTemplate 会使我们的 ListBox 用如下方式显示条目:

 

我们在 App.xaml 文件中定义如下的 Style 规则(注意如何使用 LinearGradientBrush 来获得 DiggPanel 上的好看的渐变背景效果):

 

关于 ListBox 有一点值得注意 - 即使我们定制了其条目的显示方式,它仍然会提供悬浮以及选中状态的语义,不管你使用的是鼠标还是键盘(上/下方向键,Home/End,等):

ListBox 还支持完整的流式改变大小的功能 - 并在需要的时候提供内容的自动卷动功能(注意当窗口变小时,水平滚动条是如何出现的):

下一步

我们现在已经把数据的显示切换成了基于列表的方式,并清理了其内容列表。

现在让我们来完成这个程序的最后一点功能性行为 - 实现一个主/从工作流程,让用户在列表中选择某个文章时能查看其细节。详见下一篇: 《使用用户控件实现主/从场景》。

(翻译:木野狐

分享到:
评论

相关推荐

    Silverlight教程

    · 第五部分:用 ListBox 和 DataBinding 显示列表数据 (木野狐译) · 第六部分:使用用户控件实现主从表场景 · 第七部分:使用控件模板定制控件的观感 · 第八部分:使用WPF创建一个Digg桌面应用

    用listbox 显示数据库中的数据

    在实际应用中,为了提高用户体验,还可以考虑使用数据绑定技术,如`DataSource`和`DisplayMember`属性,直接将数据库表绑定到`ListBox`,这样在数据改变时,`ListBox`会自动更新。 ```csharp listBox1.DataSource =...

    ListBox中显示图片

    在WPF(Windows Presentation Foundation)应用开发中,`ListBox`是一个常用的数据展示控件,它允许用户通过列表形式查看和选择数据。在这个场景中,我们要讨论如何在`ListBox`中显示图片,这是一个常见的需求,特别...

    VB中的ListBox多列显示实例

    在VB(Visual Basic)编程环境中,ListBox控件通常用于显示单列数据,但有时我们可能需要在ListBox中显示多列信息,例如姓名、年龄、地址等。为了实现这个功能,VB提供了一种特殊的方式来定制ListBox,使其能以表格...

    VB ListBox多列显示

    总结来说,VB ListBox多列显示涉及的知识点包括:设置`ColumnCount`、`Columns`属性,使用分隔符处理数据,设置`ColumnWidths`以调整列宽,响应用户交互事件,以及可能的性能优化。通过这些技术,我们可以创建出功能...

    delphi Listbox多列显示

    Listbox是一个常见的控件,它用于显示单列的列表数据。然而,在某些情况下,我们可能需要在一个控件中展示多列数据,比如表格形式的数据。标题“Delphi Listbox多列显示”所涉及的主题就是如何扩展Listbox的基本功能...

    ListBox加浮动显示

    在Windows编程中,控件是构建用户界面的基本元素,ListBox和ListCtrl是两种常见的控件类型,用于展示列表数据。本项目重点在于实现ListBox和ListCtrl控件的“浮动显示”功能,即当用户鼠标悬停在某个条目上时,会弹...

    silverlight使用数据模板自定义数据显示

    在本文中,我们将深入探讨Silverlight中的数据模板和自定义数据绑定,特别是在Silverlight 3.0版本中的应用。数据模板是WPF和Silverlight中一个强大的特性,它允许我们以自定义的方式显示数据对象,使得UI设计更加...

    用ListBox 显示数据库中的数据

    在这个场景下,`ListBox`控件是一个常用的元素,它允许用户通过列表形式查看和选择数据。本篇将详细介绍如何在Visual Studio 2008环境下,利用Sqlserver 2005作为数据库,将数据填充到ListBox中。 首先,我们需要...

    silverlight ListBox 导出至EXCEL

    总的来说,实现Silverlight中的ListBox文件列表管理和导出到Excel,需要对Silverlight控件、数据绑定、文件操作以及服务器端通信有深入的理解。虽然这个过程相对复杂,但通过合理的设计和代码组织,可以有效地实现这...

    ListBox动态添加数据删除数据和上移下移

    ListBox是Windows Forms和Web应用程序中常见的一种控件,用于显示一系列可选的项目。在本文中,我们将深入探讨如何在ListBox中动态地添加、删除数据,以及实现项目的上移和下移功能,所有这些操作都在无刷新的情况下...

    Silverlight ListBox拖动元素位置

    在本文中,我们将深入探讨Silverlight中的ListBox控件,特别是如何实现其元素的拖放功能,以便用户可以自由调整列表中的元素顺序。Silverlight是一种基于.NET Framework的富互联网应用程序(RIA)开发平台,它提供了...

    实现ListBox控件与ListBox控件交换数据

    在Windows编程中,ListBox...通过以上方法,你可以实现ListBox控件之间的数据交换功能,提升用户体验,使得用户能更方便地管理列表中的数据。在设计和实现过程中,始终要关注用户体验,确保操作流畅且符合用户预期。

    使用数组列表ArrayList填充ListBox

    在.NET框架中,ArrayList是System.Collections命名空间下的一种动态数组,它可以存储任意类型的对象,而ListBox控件则是Windows Forms应用程序中常见的用户界面元素,用于显示一个可选项目的列表。本篇将详细介绍...

    listbox滑动到底部后加载数据

    在Windows Phone 7、WPF(Windows Presentation Foundation)和Silverlight等平台上,ListBox是一种常用的控件,用于展示可滚动的项目列表。在处理大量数据时,为了提高用户体验和应用程序性能,通常采用“懒加载”...

    wpf实现拖拽效果 把一个listbox中的一条数据放到另外一个listbox中

    在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)环境中实现拖放效果,特别是如何将一个ListBox中的数据项拖动到另一个ListBox中。WPF是.NET Framework的一部分,提供了丰富的用户界面功能,...

    向Listbox列表框添加图片

    这个教程展示了如何通过创建自定义控件并在VB.NET中重写绘图逻辑,使Listbox能够显示带有图片的列表项。通过这种方式,你可以创建更加生动和交互性强的用户界面。不过,需要注意的是,对于大量图片的显示,可能会对...

    c# listbox显示数据库的内容

    5. **UI更新**:在完成数据读取和绑定后,确保在UI线程上更新ListBox。如果在后台线程进行,你需要使用Control类的`Invoke`或`BeginInvoke`方法来确保线程安全。 6. **异常处理**:在整个过程中,记得捕获可能出现...

    MATLAB GUI教学视频7:ListBox的基本用法

    本教程主要聚焦于MATLAB GUI中的一个重要组件——ListBox,它允许用户从预设的选项列表中选择一个或多个项。在“MATLAB GUI教学视频7:ListBox的基本用法”中,我们将深入探讨ListBox的创建、配置和事件处理,以及...

    asp.net 在ListBox控件间移动列表项源码

    1. **创建控件**:首先,在ASP.NET页面上创建两个ListBox控件,分别命名为ListBox1和ListBox2,用以存放原始列表和目标列表。 2. **绑定数据**:为ListBox1加载数据,可以是数据库查询结果、数组或其他数据源。这...

Global site tag (gtag.js) - Google Analytics