首页 > 其他分享 >dataTemplate 使用

dataTemplate 使用

时间:2023-06-05 22:37:08浏览次数:35  
标签:object public template 使用 IsTemp1 new dataTemplate pList

App
-----------------------------------------------------------------
<Application x:Class="WPFDemo.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WPFDemo"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
<local:TempConverter  x:Key="myTempConverter"/>
<DataTemplate x:Key="temp1">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="temp1" Margin="0 0 10 0"/>
                <TextBlock Text="{Binding Name}"/>
                <Label Background="Red">this is template 1</Label>
            </StackPanel>
        </DataTemplate>
        <DataTemplate x:Key="temp2">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="temp2" Margin="0 0 10 0"/>
                <TextBlock Text="{Binding Name}"/>
                <Label Background="Black">this is template 1000</Label>
            </StackPanel>
        </DataTemplate>
    </Application.Resources>
</Application> 
mainwindow
----------------------------------------------------------
<Window x:Class="WPFDemo.MainWindow"
        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:local="clr-namespace:WPFDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <StackPanel>
<ListBox ItemsSource="{Binding pList}" ItemTemplate="{Binding pList,Converter={StaticResource myTempConverter}}" Height="400" x:Name="listBox1" Width="300" />
    </StackPanel>
</Window> 
viewModel
-------------------------------------------------------------------------------
 public class MainViewModel
    {
        public MainViewModel()
        {
            _pList = new ObservableCollection<People>();
            _pList.Add(new People { IsTemp1 = false, Name = "zhangsan" });
            _pList.Add(new People { IsTemp1 = true, Name = "zhangsan" });
            _pList.Add(new People { IsTemp1 = false, Name = "lisi" });
            _pList.Add(new People { IsTemp1 = false, Name = "wangwu" });
        }
        private ObservableCollection<People> _pList = null;
public ObservableCollection<People> pList
        { get
            {
                return _pList;
            }
        }    }
 
model
---------------------------------------------------------------------------------
 public class People
    {
        public bool IsTemp1 { get; set; }
        public string Name { get; set; }
    } 
转换类
--------------------------------------------------------
 public class TempConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            Collection<People> datalist = (Collection<People>)value;

            DataTemplate template = new DataTemplate();

            if (datalist[0].IsTemp1 == true)
            {
                template = App.Current.Resources["temp1"] as DataTemplate;
            }
            else
            {
                template = App.Current.Resources["temp2"] as DataTemplate;
            }
            return template;
        }        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

标签:object,public,template,使用,IsTemp1,new,dataTemplate,pList
From: https://blog.51cto.com/u_4018548/6420080

相关文章

  • 容器化技术的使用和优缺点
    当前,容器化技术非常流行,各大小公司都在使用。那么容器化技术在实际项目中如何运用?有哪些优缺点?容器化技术是什么在容器化技术出现之前,部署系统非常麻烦,以一个简单的博客系统为例,博客系统设计如下:前后端分离,分别独立开发和部署前端使用vue,负责数据展示后端java,使用spring框......
  • Semaphore 类 的使用理解C#
    示例下面的代码示例创建一个信号量,其最大计数为3,初始计数为零。该示例启动五个线程,这会阻止等待信号量。主线程使用Release(Int32)方法重载将信号量计数增加到其最大值,从而允许三个线程进入信号量。每个线程使用Thread.Sleep方法等待一秒,以模拟工作,然后调用Release()方法......
  • DataTemplateSelector介绍
    DataTemplateSelector可以帮助我们实现动态选择数据绑定的模版,如通过ListView+DataTemplateSelector实现微信朋友圈或聊天列表效果。Github已有聊天效果图  喜欢阅读代码请直接移步:https://github.com/nishanil/Xamarin.Forms-Samples/tree/master/DataTemplateSelector本文通过......
  • post请求方式 - 抖音生活服务 使用restTemplate而不使用httpClient
    publicstaticStringdoPostForJson(Stringurl,Stringjson,StringbyteAuthorization){RestTemplaterestTemplate=newRestTemplate();logger.info("restTemplateinvokepostmethod.url:[{}],json:[{}]",url,json);long......
  • ChatGpt玩法(一):prompt使用的重要性
    前言登录https://www.topgpt.one即可免费体验ChatGPT带来的强大魅力。ChatGpt是一个强大的自然语言处理工具,可以用于多种任务,如文本生成、问答系统以及对话生成等等。其中,prompt是ChatGpt中非常重要的概念,它是指用户输入的“提示词”,可以帮助模型更好地理解用户的意图和需求。......
  • 使用Node.js搭建的微服务器基本流程
    前言使用Node.js搭建的微服务器,处理注册登录操作的流程详解。主要包括注册,登录两大模块。Node.js项目的搭建基于Express框架mongodb数据库搭建的Web服务器基本配置1.初始化Node.js项目`npminit`2.项目目录结构3.项目结构介绍config:保存项目一些公共的配置db......
  • 使用Getdata软件抓取曲线数据
    1.打开Getdata,点击“File”--->“OpenImage”注:图片格式尽量为jpg,当然tifbmppcx也可以。2.定义x,y坐标光标点原点--->右击--->"SetXmin"--->设置Xmin值(这里我随便取的,如果要修改,可以:“Operations”--->“Adjustthescale”)或者直接点击小图标。光标点x末......
  • Vuex的五个属性及使用方法示例
    一、Vuex简介Vuex是Vue.js的状态管理库,它通过中心化的状态管理使得组件间的数据共享更加容易。Vuex包含五个核心属性:state、getters、mutations、actions和modules。Vuex是Vue.js的状态管理库,它提供了一种集中式存储管理应用程序中所有组件的状态,并将其分离到一个可预测的状态容器......
  • MPI-IS/mesh库的安装与使用
    MPI-IS/mesh库MeshProcessing Library是由德国马克斯·普朗克计算机科学研究所(MPI-IS)开发的一个开源网格处理库,用于处理三维网格数据。MPI-ISMeshProcessingLibrary提供了一系列的网格处理算法,包括网格滤波、网格重建、网格配准、网格切割、网格拓扑结构处理等。它支......
  • 聊聊公司技术上的奇葩规定——计算机使用
    首先说明下公司的技术架构。MySQL+PHP+Java,纯互联网应用,Docker容器部署微服务在AWS上面。数据上没有过多敏感性,不涉及到很多敏感数据,身份识别信息通常使用的是第三方平台,我们本地不存储用户身份信息。电脑只能使用Mac如果你是Mac电脑的深度爱好者,那你有福了。公司......