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;
                };

效果

posted @ 2010-12-30 15:42  JerryT  阅读(1360)  评论(0编辑  收藏  举报