SilverLight用DataContext显示数据
首先需要创建一个实体类
public class Product { private string productname;//产品名字 public string ProductName { get { return productname; } set { productname = value; } } private double productprice;//产品价格 public double ProductPrice { get { return productprice; } set {productprice = value;} } }
界面代码
<Grid Margin="26,20,0,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="0.32*"/> <ColumnDefinition Width="0.68*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="0.225*"/> <RowDefinition Height="0.235*"/> </Grid.RowDefinitions> <TextBlock Margin="8,35,17,0" TextWrapping="Wrap" Text="ProductName" Height="30" VerticalAlignment="Top"/> <TextBlock Margin="8,25,17,40" TextWrapping="Wrap" Text="ProductPrice" Grid.Row="1"/> <TextBox x:Name="txtProductName" Grid.Column="1" Margin="25,35,43,58" TextWrapping="Wrap" Text="{Binding ProductName}"/> <TextBox Grid.Column="1" Height="32" Margin="25,39,43,0" Grid.Row="1" TextWrapping="Wrap" Text="{Binding ProductPrice}" VerticalAlignment="Top"/> </Grid>
要想使用数据绑定,必须通过绑定表达式来设置目标属性。绑定表达式是一个标记语言,通常以Binding开头。创建表达式需要指明要绑定的数据源中的属性的名称。这个例子中需要绑定Product中的两个属性,需要用到的绑定表达式是{Binding ProductName}
然后用它设置TextBox的Text属性。
<TextBox x:Name="txtProductName" Grid.Column="1" Margin="25,35,43,58" TextWrapping="Wrap" Text="{Binding ProductName}"/>
绑定表达式只是指明了数据源中属性的名称,但它并不知道数据源。可以通过两种方式来设置数据源:通过设置元素的DataContext属性或者设置绑定的Source属性。
大多数情况下,最实用的方法是设置元素的DataContext属性。在上边例子中你可以设置每一个文本框的DataContext属性。但是,还有更简单的方法。如果一个元素用了绑定表达式但它的DataContext属性为空,这个元素将会往它的上级寻找,直到找到一个数据源。因此在上边例子中可以直接设置Grid的DataContext属性,所有的TextBox也将用相同的数据源。
后台代码
this.Loaded += (ss, ee) => { Product product = new Product() { ProductName="Audi", ProductPrice=50000.0 }; LayoutRoot.DataContext = product; };
效果