首页 > 其他分享 >avalonia的IDataTemplate使用

avalonia的IDataTemplate使用

时间:2023-06-27 19:00:28浏览次数:37  
标签:return IDataTemplate param Build ModelData 使用 public avalonia

1、IDataTemplate的作用

如果你需要对DataTemplate有更多的控制,你可以通过创建一个实现idatatemplate接口的类来实现。使用这个接口,您可以创建自己的DataTemplate,不仅可以定义数据的DataType,还可以定义它的属性。它相当于wpf里的trigger。

2、怎么实现?

要使用这个接口,你必须在类中实现以下两个成员:
public bool Match(object data) { ... }你需要在这个方法中检查所提供的数据是否与你的IDataTemplate匹配。如果数据匹配,则需要返回true,否则返回false。
public IControl Build(object param) { ... }在此方法中,您需要构建并返回代表数据的控件。

3、实例:

(1)继承IDataTemplate接口

 public class MytSelector : IDataTemplate
    {
        /// <summary>
        /// 定义正常状态
        /// </summary>
        public IDataTemplate NormalState { get; set; }
        /// <summary>
        /// 定义错误状态
        /// </summary>
        public IDataTemplate ErrorState { get; set; }
        public IControl Build(object param)
        {
          //ModelData是实体类
            if (param is ModelData item)
            {
                //IsErrorMethod是ModelData类的属性
                if (item.IsErrorMethod)
                {
                    return ErrorState.Build(param);

                }
                else 
                {
                    return NormalState.Build(param);
                }
               
            }
            return new Control();
        }

        public bool Match(object data)
        {
            return data is ModelData;
        }
    }

(2)在目标axaml引用MySelector类的命名空间

 xmlns:dataTemplates="using:MyApp.DataTemplates"

(3)在控件里调用

    <DataGrid  CanUserReorderColumns="False" Items="{Binding ModelObjestList}">      
                                <DataGrid.Columns>
                                    <DataGridTemplateColumn Header="号码" IsReadOnly="True">
                                        <DataGridTemplateColumn.CellTemplate>
                                            <dataTemplates:MytSelector>
                                                <dataTemplates:MytSelector.NormalState>
                                                    <DataTemplate>
                                                        <TextBlock VerticalAlignment="Center" Text="{Binding Id}" />
                                                    </DataTemplate>
                                                </dataTemplates:MytSelector.NormalState>
                                                <dataTemplates:MytSelector.ErrorState>
                                                    <DataTemplate>
                                                            <TextBlock VerticalAlignment="Center" Background="Red" Text="{Binding Id}" />
                                                    </DataTemplate>
                                                </dataTemplates:MytSelector.ErrorState>
                                            </dataTemplates:MytSelector>
                                        </DataGridTemplateColumn.CellTemplate>
                                    </DataGridTemplateColumn>                                    
                                </DataGrid.Columns>
                            </DataGrid>
                    

即可实现

标签:return,IDataTemplate,param,Build,ModelData,使用,public,avalonia
From: https://www.cnblogs.com/ssvip/p/17509720.html

相关文章

  • 使用arcgispro将shp格式地图转换为移动端使用的geodatabase格式数据
    使用arcgispro将shp格式地图转换为移动端使用的geodatabase格式数据导入完成......
  • 使用 PDF一机一码加密大师,加密打包PDF文件(一机一码,绑定机器,无需额外安装阅读器)
    PDF一机一码加密大师,可以加密任意PDF文档,添加一机一码授权,静态密码等,可以禁止用户复制,打印PDF文档中的内容,并且加密生成的PDF在其他用户电脑上无需安装第三方阅读器即可直接阅读。 下载地址:点击进入下载页面 特性 1.支持一机一码加密,可以防止PDF文件未授权的分发......
  • 使用arcgispro转换地图格式为移动端使用的tpk格式
    使用arcgispro转换地图格式为移动端使用的tpk格式......
  • 单列行数太大使用excel进行分列显示
    公式:=OFFSET($A$1,COLUMN(A1)-1+(ROW(A1)-1)*2,)说明:最后的*2是指定分列的个数 ,这里指定分2列  ......
  • Spring @Configuration 和@Bean的使用
    http://www.tuicool.com/articles/M3MVr2 虽然2.0版本发布以来,Spring陆续提供了十多个注解,但是提供的这些注解只是为了在某些情况下简化XML的配置,并非要取代XML配置方式。这一点可以从SpringIoC容器的初始化类可以看出: ApplicationContext接口的最常用的实现类是它们......
  • 使用Spring Boot快速构建应用
    随着Spring4新版本的发布,SpringBoot这个新的子项目得到了广泛的关注,因为不管是Spring4官方发布的新闻稿还是针对首席架构师AdrianColyer的专访,都对这个子项目所带来的生产率提升赞誉有加。 SpringBoot充分利用了JavaConfig的配置模式以及“约定优于配置”的理念,能够极大的简......
  • 0开始使用
    1-安装PySimpleGUIpipinstallPySimpleGUI2-基本框架importPySimpleGUIassg#布局(空白),没有任何内容/对象layout=[[]]#创造窗口window=sg.Window('myTitle',layout)#事件监听event,values=window.read()3-运行截图......
  • TiDB 7.1资源管控和Oceanbase 4.0多租户使用对比
    作者:seiang一、背景TiDB和Oceanbase都是非常优秀的国产分布式数据库;公司从2021年第一套生产业务的TiDB集群落地,随着第一套TiDB生产集群的落地,主要面向不同的业务类型,随着业务的不断迭代,第一套TiDB集群面临最大的问题就是:同一集群,不同业务之间互相影响,所以当时就对第一套TiDB......
  • 使用AI聊天模型写作和编码心得
    合集地址给大家推荐一个国内暂时免费使用AI聊天模型的网站:ChatAnywhere有需要的朋友可以点击试用一下。写文档要点详细描述要干的事情说清楚你的需求,例如:可以使用序号列出所有需求,让AI模型来梳理逻辑对描述不清楚的带你让模型进一步解释时,需要把最初的问题再说清楚,避免断连逐级扩散......
  • 使用kubeadm快速部署一个K8s集群
    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。这个工具能通过两条指令完成一个kubernetes集群的部署:#创建一个Master节点$kubeadminit#将一个Node节点加入到当前集群中$kubeadmjoin<Master节点的IP和端口>1.安装要求在开始之前,部署Kubern......