WPF將數據庫和GridView綁定並更改GridView模板


 首先來看一下如何使用GridView,在前台的話代碼如下:這里僅僅舉出一個例子,GridView是作為子項嵌套在ListView中的,這里的數據源是通過綁定的方式來綁定到GridView中的。

<ListView Margin="15,115,15,48" Name="lstProducts" ItemsSource="{Binding}">
   <ListView.View>
      <GridView>
        <GridViewColumn Header="ProductID"
             DisplayMemberBinding="{Binding Path=ProductID}"></GridViewColumn>
          <GridViewColumn Header="Product Name"
               DisplayMemberBinding="{Binding Path=ProductName}"></GridViewColumn>
          <GridViewColumn Header="SupplierID"
               DisplayMemberBinding="{Binding Path=SupplierID}"></GridViewColumn>
          <GridViewColumn Header="CategoryID"
               DisplayMemberBinding="{Binding Path=CategoryID}"></GridViewColumn>
          <GridViewColumn Header="Qty. Per Unit"
               DisplayMemberBinding="{Binding Path=QuantityPerUnit}"></GridViewColumn>
          <GridViewColumn Header="Unit Price"
               DisplayMemberBinding="{Binding Path=UnitPrice}"></GridViewColumn>
          <GridViewColumn Header="In Stock"
               DisplayMemberBinding="{Binding Path=UnitInStock}"></GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>  
這里有一些關鍵字,Header和DisplayMemberBinding,在前台中我們可以通過修改模板的方式來修改GridView的樣式,首先我們可以修改GridView的列頭的樣式,我們可以改變背景,字體大小,高度等一系列參數。 
<GridView.ColumnHeaderTemplate>
     <DataTemplate>
          <TextBlock FontFamily="Microsoft YaHei" FontSize="35" Foreground="White" Background="#333" Width="265" HorizontalAlignment="Center" TextAlignment="Center">
            <TextBlock.Text>
                  <Binding/>
            </TextBlock.Text>
        </TextBlock>
    </DataTemplate>
</GridView.ColumnHeaderTemplate>  
另外還有一個重要的模板,就是CellTemplate,我們需要注意GridViewColumn用了DisplayMemberBinding 使得CellTemplate失效,所以如果需要自定義CellTemplate,那么一定要去掉 DisplayMemberBinding。 下面是一個具體的例子。
首先在資源中定義模板,
<DataTemplate x:Key="GridViewCellTemplate">
      <TextBlock FontFamily="Microsoft YaHei" Height="60" FontSize="35" Foreground="White" Background="Gray" Width="265" HorizontalAlignment="Center" TextAlignment="Center">
          <TextBlock.Text>
                <Binding Path="DisplayName" Mode="TwoWay"/>
          </TextBlock.Text>
      </TextBlock>
</DataTemplate>

然后在具體的列中引用,<GridViewColumn Header="投訴人"   Width="Auto" CellTemplate="{StaticResource GridViewCellTemplate}" ></GridViewColumn>這樣就可以實現對每一列的模板替換。

還有很重要的一部分就是在后台來講數據庫綁定到前台中,在xaml中我們使用了ItemsSource="{Binding}",那么在后台的代碼中:

/// <summary>
/// 從數據庫中獲取數據並綁定到GridView上
/// </summary>
private void GetDataFromDataBase()
{
string connectStr = "Server=127.0.0.1;Database=test;Uid=root;Pwd=12345;Port=3306;CharSet=gbk;allow zero datetime=true";
string cmdStr = "select * from camerainfo order by pID desc limit 100";
DataBaseMySqlHander sql = new DataBaseMySqlHander(connectStr);
DataTable dt = sql.GetDataTable(cmdStr);
if (dt == null) return;
//創建一個DataTable的副本
DataTable tempTable = new DataTable();
tempTable = dt.Clone();//克隆 System.Data.DataTable 的結構
//包括所有 System.Data.DataTable 架構和約束。
if (tempTable != null && dt.Rows.Count>0)
{
     for (int i = 0; i < dt.Rows.Count; i++)
       {
           tempTable.ImportRow(dt.Rows[i]); 
       }
}
//為ListView綁定數據源
this.dv= tempTable.DefaultView; 
tempTable.Dispose();
}  
以上部分就實現了簡單的數據庫的綁定,這部分也是非常重要的部分,我們在使用的時候可以按照上述步驟來進行綁定!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM