65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 RIA 和 EntityFramework 在 Silverlight 中进行数据绑定 - 第 1 部分(显示数据)

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2011年4月12日

CPOL

4分钟阅读

viewsIcon

9695

使用 RIA 和 EntityFramework 在 Silverlight 中进行数据绑定 - 第 1 部分(显示数据)

数据绑定对于任何技术都至关重要。 如果您想让我评价 SL 的学习体验,那么数据绑定肯定是学习过程中的一个主要环节。 已经有很多关于这个特定主题的文章和帖子,但这一系列帖子试图以最少的内容和一个实际示例向您介绍这个概念。

在数据驱动的应用程序中,一切都围绕着数据源,无论是数据库、XML 还是任何其他来源。 在我的之前的文章中,我认为我已经对如何使用 EntityFramework 和 RIA 服务创建数据模型进行了相当程度的介绍。 这篇文章涵盖了在 UI 中显示数据。

Silverlight 中的绑定概念

要继续阅读这篇文章,我想您可能需要有一些基本的绑定概念。 详细描述这个概念可能是一项重复性的任务,所以我建议您阅读 MSDN 上的这篇文章,它是一个完整的学习资源。

一个真实的场景

在这里,我试图解释一个基于主/细信息数据的真实应用程序场景,其中关于主信息将被显示到详细信息。

Silverlight Ria Blog From Manas

项目和数据模型设置

创建一个启用 RIA 服务的 Silverlight 项目,并使用 Entity Framework 添加数据模型。 详细步骤在此 之前的文章中进行了描述。 在这里,“DataModel_SOI.edmx” 模型容器显示了映射到标量数据字段的属性。 “DomainService_SOI” 服务类将负责服务器端查询。

Silverlight Ria Blog From Manas Silverlight Ria Blog From Manas
绑定方法

好吧,绑定方法非常简单,我们将在页面加载时将状态实体集合绑定到列表框。 虽然我们从不打算以 State 1 State 2 … 对象方式格式显示数据,但我们将分配实体的 DisplayMember。 下一步是将选定的列表框项目附加到位于用于详细信息的控件的 Visual Tree 之上的网格布局控件。 将选定的状态实体附加到网格布局后,可以直接将属性用于控件。

Silverlight Ria Blog From Manas

绑定到状态列表框

当然,第一步是将状态实体绑定到列表框,并且该列表应显示状态名称。 下面的 XAML 代码显示了在主页的网格布局控件中定义的列表框。

<ListBox Grid.Row="1" HorizontalAlignment="Left" Margin="6,2,0,14" 
Name="lstStates" Width="210" 
FontFamily="Portable User Interface" FontSize="13" FontWeight="Bold" 
/>

我将在页面加载期间使用以下代码将数据绑定到列表框。

private void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
//Create DataContext Object 
DomainService_SOI dataContext = new DomainService_SOI(); 
//Use LoadOperation method to Populate the Entity Collection 
LoadOperation<State> states = dataContext.Load(dataContext.GetStatesQuery()); 
//Bind To List Box 
lstStates.ItemsSource = states.Entities; 
lstStates.DisplayMemberPath = “StateName”;//Use StateName as Display Name 
}

使用选定的列表框项目作为网格布局的 DataContext

我们不会将每个单独的控件指向列表框的选定实体对象,而是将其绑定到所有控件的父容器。 父dataContext可以用作其他控件的源。 以下代码段显示了如何将网格布局附加到选定的项目。

<Grid x:Name="ContentStackPanel" DataContext="{Binding SelectedItem,ElementName=lstStates}">

Silverlight Ria Blog From Manas

这里需要注意的是,除了列表框绑定之外,我们声明的所有内容都在 XAML 中。 声明式编程的力量有助于消除绑定与其数据源的紧密耦合。

绑定到详细信息控件

下一步将是简单的属性绑定到分配给父控件的 DataContext

<TextBlock FontWeight="Bold" Height="23" HorizontalAlignment="Left" 
Margin="95,68,0,0" Name="tbLanguage" Text="{Binding Language}" 
VerticalAlignment="Top" Grid.Column="1" Grid.Row="1" />

Silverlight Ria Blog From Manas

这里需要注意的是,Language 是 State Entity 的属性,一旦用户在列表框中选择一个项目,它将被分配给父网格布局控件。 我将对其他控件遵循相同的概念,并且我显示数据的动机已准备就绪。

让我们运行应用程序并检查数据。

Silverlight Ria Blog From Manas

结论

好吧,数据绑定并不局限于上面描述的唯一方式,但它是建议的方式之一。 这篇文章仅限于显示数据,而我的下一篇文章将是本文的延续,我们将使用绑定概念来跟踪更改、验证等等。

感谢您的耐心。 请继续评论!

源代码和链接

文章系列

© . All rights reserved.