silverlight带有复选框的列

今天我们来一起学习怎样自定义DataGrid的单元格呈现形式的基本操作方法。

 

基本知识讲解

 

1)两种状态

DataGrid的单元格的状态有两类,即编辑状态和非编辑状态。

在实际开发中,如果一个单元格所在的列不设为只读的话(即要求可读写),那么这个单元格就存在这两种状态。按需要,这时就应当对这两种状态对单元格分别设定不同的编辑模板。如果该单元格仅用于进行简易的文本编辑,则可保留原有状态,无需重新设定。

这两种编辑模板的标签如下所示:

①非编辑状态模板:<data:DataGridTemplateColumn.CellTemplate>

②编辑状态模板:<data:DataGridTemplateColumn.CellEditingTemplate>

 

2)三种模板

<data:DataGridTextColumn>

普通文本列,即基本默认设置

<data:DataGridCheckBoxColumn>

带有复选框的列,当该列单元格数据的值为true或false、1或0时,将该列的模板设定。

<data:DataGridTemplateColumn>

自定义模板列,这个是功能最强的可以放入任何自定义控件。

 

 

关于绑定

如果单元格所在列无需编辑或只读的话,绑定模式设定为默认的OneWay即可。如果该列需要进行编辑,就请将绑定模式设为TwoWay。

更为详细的说明请参见MSDN的文章。(点这里

 

 

实例

说明:为了能自定义列,我们需要先将DataGrid的AutoGenerateColumns属性设为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;

        }

    }

}

转载于:https://www.cnblogs.com/hl3292/archive/2010/11/12/1875424.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值