日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

强大的DataGrid组件[7]_自定义DataGrid——Silverlight学习笔记[15]

發布時間:2024/4/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 强大的DataGrid组件[7]_自定义DataGrid——Silverlight学习笔记[15] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天我們來一起學習怎樣自定義DataGrid的單元格呈現形式的基本操作方法。

?

基本知識講解

?

1)兩種狀態

DataGrid的單元格的狀態有兩類,即編輯狀態和非編輯狀態。

在實際開發中,如果一個單元格所在的列不設為只讀的話(即要求可讀寫),那么這個單元格就存在這兩種狀態。按需要,這時就應當對這兩種狀態對單元格分別設定不同的編輯模板。如果該單元格僅用于進行簡易的文本編輯,則可保留原有狀態,無需重新設定。

這兩種編輯模板的標簽如下所示:

①非編輯狀態模板:<data:DataGridTemplateColumn.CellTemplate>

②編輯狀態模板:<data:DataGridTemplateColumn.CellEditingTemplate>

?

2)三種模板

<data:DataGridTextColumn>

普通文本列,即基本默認設置

<data:DataGridCheckBoxColumn>

帶有復選框的列,當該列單元格數據的值為truefalse、10時,將該列的模板設定。

<data:DataGridTemplateColumn>

自定義模板列,這個是功能最強的可以放入任何自定義控件。

?

?

關于綁定

如果單元格所在列無需編輯或只讀的話,綁定模式設定為默認的OneWay即可。如果該列需要進行編輯,就請將綁定模式設為TwoWay。

更為詳細的說明請參見MSDN的文章。(點這里

?

?

實例

說明:為了能自定義列,我們需要先將DataGridAutoGenerateColumns屬性設為false。

?

MainPage.xaml文件代碼

<UserControl

?? ?xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

?? ?xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

?? ?xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

?? ?xmlns:src="clr-namespace:SilverlightClient"

?? ?mc:Ignorable="d" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="SilverlightClient.MainPage"

?? ?d:DesignWidth="320" d:DesignHeight="240">

<UserControl.Resources>

??? <!--靜態資源綁定-->

?? <src:cbSexListProvider x:Key="cbSexListProvider"></src:cbSexListProvider>

</UserControl.Resources>

??????? <Grid x:Name="LayoutRoot" Background="White" Width="320" Height="240">

??????? <data:DataGrid x:Name="dgCustom" Margin="8,8,8,42" AutoGenerateColumns="False" FontSize="14">

??????????? <data:DataGrid.Columns>

??????????????? <data:DataGridTextColumn Header="編號" IsReadOnly="True" Binding="{Binding EmployeeID,Mode=OneWay}" /><!--該列只讀-->

? ??????????????<data:DataGridTextColumn Header="名稱" Binding="{Binding EmployeeName,Mode=TwoWay}" />

??????????????? <data:DataGridTextColumn Header="年齡" Binding="{Binding EmployeeAge,Mode=TwoWay}" />

??????????????? <data:DataGridTemplateColumn Header="性別" Width="80">

??????????????????? <data:DataGridTemplateColumn.CellTemplate><!--普通顯示模式-->

??????????????????????? <DataTemplate>

??????????????????????????? <TextBlock Text="{Binding EmployeeSex}"></TextBlock>

??????????????????????? </DataTemplate>

??????? ????????????</data:DataGridTemplateColumn.CellTemplate>

??????????????????? <data:DataGridTemplateColumn.CellEditingTemplate><!--編輯模式-->

??????????????????????? <DataTemplate>

??????????????????????????? <ComboBox Width="80" ItemsSource="{Binding cbSexList,Source={StaticResource cbSexListProvider}}" SelectedItem="{Binding EmployeeSex,Mode=TwoWay}" />

??????????????????????? </DataTemplate>

??????????????????? </data:DataGridTemplateColumn.CellEditingTemplate>

??????????????? </data:DataGridTemplateColumn>

??????????????? <data:DataGridCheckBoxColumn Header="婚否" Binding="{Binding EmployeeMarried,Mode=TwoWay}" />

??????????? </data:DataGrid.Columns>

??????? </data:DataGrid>

??? </Grid>

</UserControl>

MainPage.xaml.cs文件代碼

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

?

namespace SilverlightClient

{

??? //靜態資源綁定源

??? public class cbSexListProvider

??? {

??????? public List<string> cbSexList

??????? {

??????????? get

??????????? {

??????????????? return new List<string> { "", "" };

??????????? }

??????? }

??? }

?

??? //定義數據類

??? public class Employees

??? {

??????? public int EmployeeID { get; set; }

??????? public string EmployeeName { get; set; }

??????? public int EmployeeAge { get; set; }

??????? public string EmployeeSex { get; set; }

??????? public int EmployeeMarried { get; set; }

??? }

?

??? public partial class MainPage : UserControl

??? {

??????? List<Employees> em = new List<Employees>();

?

??????? public MainPage()

??????? {

??????????? InitializeComponent();

??????????? this.Loaded += new RoutedEventHandler(MainPage_Loaded);

??????? }

?

??????? void MainPage_Loaded(object sender, RoutedEventArgs e)

??????? {

??????????? em.Add(new Employees() { EmployeeID = 1, EmployeeName = "張三", EmployeeAge = 23, EmployeeSex = "", EmployeeMarried = 0 });

??????????? em.Add(new Employees() { EmployeeID = 2, EmployeeName = "李四", EmployeeAge = 24, EmployeeSex = "", EmployeeMarried = 1 });

??????????? em.Add(new Employees() { EmployeeID = 3, EmployeeName = "王五", EmployeeAge = 25, EmployeeSex = "", EmployeeMarried = 1 });

???????? ???dgCustom.ItemsSource = em;

??????? }

??? }

}

?

最終效果圖:

?

作者:Kinglee
文章出處:Kinglee’s Blog (http://www.cnblogs.com/Kinglee/)
版權聲明:本文的版權歸作者與博客園共有。轉載時須注明本文的詳細鏈接,否則作者將保留追究其法律責任。

轉載于:https://www.cnblogs.com/Kinglee/archive/2009/08/25/1553938.html

總結

以上是生活随笔為你收集整理的强大的DataGrid组件[7]_自定义DataGrid——Silverlight学习笔记[15]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。