当前位置: 首页 > news >正文

有关DataForm组件的研究_自定义DataForm模板——Silverlight学习笔记[25]

为了满足各种开发需求,我们需要为DataForm制定不同的模板。本文将为大家介绍如何配置DataForm四个部分的模板——头模板(HeaderTemplate)、编辑项模板(EditTemplate)、新增项模板(NewItemTemplate)以及只读模板(ReadOnlyTemplate)。

 

预备工作

打开MainPage.xaml文件,在UserControl标签中添加如下命名空间:

xmlns:dataFormToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit"

 

1)头模板的配置

配置格式如下:

<dataFormToolkit:DataForm.HeaderTemplate>

    <DataTemplate>

        <!--这里添加需要配置的控件-->

    </DataTemplate>

</dataFormToolkit:DataForm.HeaderTemplate>


2
)编辑项模板的配置

配置格式如下:

<dataFormToolkit:DataForm.EditTemplate>

    <DataTemplate>

        <!--这里添加需要配置的控件-->

    </DataTemplate>

</dataFormToolkit:DataForm.EditTemplate>


3
)新增项模板的配置

配置格式如下:

<dataFormToolkit:DataForm.NewItemTemplate>

    <DataTemplate>

        <!--这里添加需要配置的控件-->

    </DataTemplate>

</dataFormToolkit:DataForm.NewItemTemplate>


4
)只读模板的配置

配置格式如下:

<dataFormToolkit:DataForm.ReadOnlyTemplate>

    <DataTemplate>

        <!--这里添加需要配置的控件-->

    </DataTemplate>

</dataFormToolkit:DataForm.ReadOnlyTemplate>

 

实例

详细的说明在代码中给出。

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"

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

    d:DesignWidth="320" d:DesignHeight="260">

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

        <dataFormToolkit:DataForm x:Name="dfEmployee" Margin="8,8,8,25" FontSize="14" Width="304" Height="210">

            <!--头模板开始-->

            <dataFormToolkit:DataForm.HeaderTemplate>

                <DataTemplate>

                    <StackPanel Orientation="Horizontal">

                        <Image Source="table.png" Width="16" Height="16"></Image>

                        <TextBlock Text="员工信息表单"></TextBlock>

                    </StackPanel>

                </DataTemplate>

            </dataFormToolkit:DataForm.HeaderTemplate>

            <!--头模板结束-->

            <!--编辑项模板开始-->

            <dataFormToolkit:DataForm.EditTemplate>

                <DataTemplate>

                    <StackPanel>

                        <dataFormToolkit:DataField Label="工号:">

                            <TextBox Text="{Binding EmployeeID,Mode=OneWay}"></TextBox>

                        </dataFormToolkit:DataField>

                        <dataFormToolkit:DataField Label="姓名:">

                            <TextBox Text="{Binding EmployeeName,Mode=TwoWay}"></TextBox>

                        </dataFormToolkit:DataField>

                        <dataFormToolkit:DataField Label="年龄:">

                            <TextBox Text="{Binding EmployeeAge,Mode=TwoWay}"></TextBox>

                        </dataFormToolkit:DataField>

                        <dataFormToolkit:DataField Label="部门:">

                            <ComboBox ItemsSource="{StaticResource cbDepartmentDataProvider}" SelectedItem="{Binding DepartmentName,Mode=TwoWay}"></ComboBox>

                        </dataFormToolkit:DataField>

                    </StackPanel>

                </DataTemplate>

            </dataFormToolkit:DataForm.EditTemplate>

            <!--编辑项模板结束-->

            <!--新增项模板开始-->

            <dataFormToolkit:DataForm.NewItemTemplate>

                <DataTemplate>

                    <StackPanel>

                        <TextBlock Text="添加新项目"></TextBlock>

                        <dataFormToolkit:DataField Label="工号:">

                            <TextBox Text="{Binding EmployeeID,Mode=TwoWay}"></TextBox>

                        </dataFormToolkit:DataField>

                        <dataFormToolkit:DataField Label="姓名:">

                            <TextBox Text="{Binding EmployeeName,Mode=TwoWay}"></TextBox>

                        </dataFormToolkit:DataField>

                        <dataFormToolkit:DataField Label="年龄:">

                            <TextBox Text="{Binding EmployeeAge,Mode=TwoWay}"></TextBox>

                        </dataFormToolkit:DataField>

                        <dataFormToolkit:DataField Label="部门:">

                            <ComboBox ItemsSource="{StaticResource cbDepartmentDataProvider}" SelectedItem="{Binding DepartmentName,Mode=TwoWay}"></ComboBox>

                        </dataFormToolkit:DataField>

                    </StackPanel>

                </DataTemplate>

            </dataFormToolkit:DataForm.NewItemTemplate>

            <!--新增项模板结束-->

            <!--只读模板开始-->

            <dataFormToolkit:DataForm.ReadOnlyTemplate>

                <DataTemplate>

                    <StackPanel>

                        <TextBlock Text="只读状态"></TextBlock>

                        <dataFormToolkit:DataField Label="工号:">

                            <TextBlock Text="{Binding EmployeeID,Mode=TwoWay}"></TextBlock>

                        </dataFormToolkit:DataField>

                        <dataFormToolkit:DataField Label="姓名:">

                            <TextBlock Text="{Binding EmployeeName,Mode=TwoWay}"></TextBlock>

                        </dataFormToolkit:DataField>

                        <dataFormToolkit:DataField Label="年龄:">

                            <TextBlock Text="{Binding EmployeeAge,Mode=TwoWay}"></TextBlock>

                        </dataFormToolkit:DataField>

                        <dataFormToolkit:DataField Label="部门:">

                            <TextBlock Text="{Binding DepartmentName,Mode=TwoWay}"></TextBlock>

                        </dataFormToolkit:DataField>

                    </StackPanel>

                </DataTemplate>

            </dataFormToolkit:DataForm.ReadOnlyTemplate>

            <!--只读模板结束-->

        </dataFormToolkit:DataForm>

        <CheckBox x:Name="cbIsReadOnly" Height="30" HorizontalAlignment="Left" Margin="8,0,0,8" VerticalAlignment="Bottom" Width="100" Content="是否只读" FontSize="16"/>

    </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 Employees

    {

        public int EmployeeID { get; set; }

        public string EmployeeName { get; set; }

        public int EmployeeAge { get; set; }

        public string DepartmentName { get; set; }

    }

 

    public partial class MainPage : UserControl

    {

        //ComboBox的数据源

        public List<string> cbDepartmentList

        {

            get

            {

                return new List<string> { "管理部", "财务部" };

            }

        }

 

        public MainPage()

        {

            Resources.Add("cbDepartmentDataProvider", cbDepartmentList);//添加数据源

            InitializeComponent();

            this.Loaded += new RoutedEventHandler(MainPage_Loaded);

            this.cbIsReadOnly.Click += new RoutedEventHandler(cbIsReadOnly_Click);

        }

 

        void cbIsReadOnly_Click(object sender, RoutedEventArgs e)

        {

            if (cbIsReadOnly.IsChecked == true)

            {

                dfEmployee.IsReadOnly = true;

                dfEmployee.OnApplyTemplate();//刷新模板状态

            }

            else

            {

                dfEmployee.IsReadOnly = false;

                dfEmployee.OnApplyTemplate();

            }

        }

 

        void MainPage_Loaded(object sender, RoutedEventArgs e)

        {

           

            dfEmployee.ItemsSource = GetEmployees();

        }

       

        //DataForm提供数据

        private List<Employees> GetEmployees()

        {

            List<Employees> returnedValue = new List<Employees>();

            returnedValue.Add(new Employees() { EmployeeID = 1, EmployeeName = "张三", EmployeeAge = 23, DepartmentName="管理部" });

            returnedValue.Add(new Employees() { EmployeeID = 2, EmployeeName = "李四", EmployeeAge = 24, DepartmentName="财务部" });

            return returnedValue;

        }

    }

}

 

最终效果图

图一:头模板与编辑项模板

 


图二:新增项模板

 


图三:只读模板

作者:Kinglee
文章出处:Kinglee’s Blog ( http://www.cnblogs.com/Kinglee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。

转载于:https://www.cnblogs.com/Kinglee/archive/2009/09/10/1564307.html

相关文章:

  • ˇ空ˇ
  • 老师布置的作业,想到我头疼
  • 更改文档库可备份的大小
  • Domino 网络域监控配置之启用和禁用DDM探测
  • 网络地址转换NAT
  • SICP学习笔记(1.2.3 ~ 1.2.6)
  • 再说invoke和begininvoke
  • 好用的把PDF等转换为SWF的工具
  • B TO C 介绍
  • 关于SQLServer死锁的诊断和定位
  • NAGVIS安装详解
  • 和外国骗子第一次亲密接触
  • ntp 同步
  • Flex 全屏显示方法
  • 2009第二届C++技术大会即将在上海隆重召开
  • 5、React组件事件详解
  • canvas 绘制双线技巧
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • golang 发送GET和POST示例
  • gops —— Go 程序诊断分析工具
  • JavaScript 奇技淫巧
  • JS学习笔记——闭包
  • nginx 配置多 域名 + 多 https
  • SQLServer之创建数据库快照
  • uni-app项目数字滚动
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 七牛云假注销小指南
  • 前端技术周刊 2019-02-11 Serverless
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 巧用 TypeScript (一)
  • 深入浅出webpack学习(1)--核心概念
  • 我从编程教室毕业
  • #QT(TCP网络编程-服务端)
  • #控制台大学课堂点名问题_课堂随机点名
  • (1) caustics\
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (floyd+补集) poj 3275
  • (八)Flask之app.route装饰器函数的参数
  • (十一)c52学习之旅-动态数码管
  • (四)JPA - JQPL 实现增删改查
  • ***检测工具之RKHunter AIDE
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • 、写入Shellcode到注册表上线
  • .NET 5种线程安全集合
  • .net 发送邮件
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .net访问oracle数据库性能问题
  • .net和jar包windows服务部署
  • .net专家(张羿专栏)
  • ??eclipse的安装配置问题!??
  • @AutoConfigurationPackage的使用
  • @Conditional注解详解
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?