在触摸屏设备上、由于列表是的信息展示不是非常直观和便捷操作。

所以也就出现了很多用面板控件:类似win10的Metro风格, 所以抽空做了一个WPF面板控件。

话不多上 , 先上一个示例图。

为了便于阅读、于是做了一个简单版本, 提供源代码各位可以下载, 该示例中、用的是GalaSoft Mvvm。不了解的朋友Google一下。

新建一个WPF工程添加一个自定义控件、名称自定义, 一下所有UserControl实现代码: 

<UserControl.Resources>
<Style x:Key="TextBlockStyle" TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="NoWrap"/>
<Setter Property="TextTrimming" Value="None"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="FontSize" Value=""/>
<Setter Property="Margin" Value="10 8 5 0"/>
<Setter Property="Foreground" Value="#616161"/>
</Style>
</UserControl.Resources>
<Grid>
<ItemsControl ItemsSource="{Binding DoginfoModelList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns=""></UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate>
<DataTemplate>
<Border CornerRadius="" Background="White" Margin="">
<StackPanel Background="White" Margin="">
<Border Height="">
<Grid>
<Grid.Background>
<ImageBrush ImageSource="Images/Logo.jpg" Stretch="Uniform"/>
</Grid.Background>
</Grid>
</Border>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<TextBlock FontSize="" FontWeight="Bold" VerticalAlignment="Center" Text="{Binding Info}"></TextBlock>
<Border Background="Red" Width="" Height="" VerticalAlignment="Center" Margin="3 0 0 0" CornerRadius="">
<TextBlock Text="{Binding TypeName}" FontSize="" Foreground="White" HorizontalAlignment="Center"/>
</Border>
</StackPanel> <Grid>
<TextBlock Style="{DynamicResource TextBlockStyle}" Text="{Binding Code}"></TextBlock>
<TextBlock Style="{DynamicResource TextBlockStyle}" HorizontalAlignment="Right" Text="{Binding BedNumber}"></TextBlock>
</Grid> <TextBlock Style="{DynamicResource TextBlockStyle}" Text="{Binding Doctor}"></TextBlock>
<TextBlock Style="{DynamicResource TextBlockStyle}" Text="{Binding Day}"></TextBlock>
<TextBlock Style="{DynamicResource TextBlockStyle}" Text="{Binding Time}"></TextBlock>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>

用于后台绑定的数据模板的实体类代码:

 public class DogInfo : ViewModelBase
{ #region private
private string info;
private string typeName;
private string code;
private string bedNumber;
private string doctor;
private string day;
private string time;
#endregion /// <summary>
/// 主要信息
/// </summary>
public string Info
{
get { return info; }
set { info = value; RaisePropertyChanged(); }
} /// <summary>
/// 显示内容
/// </summary>
public string TypeName
{
get { return typeName; }
set { typeName = value; RaisePropertyChanged(); }
} /// <summary>
/// 编号
/// </summary>
public string Code
{
get { return code; }
set { code = value; RaisePropertyChanged(); }
} /// <summary>
/// 床号
/// </summary>
public string BedNumber
{
get { return bedNumber; }
set { bedNumber = value; RaisePropertyChanged(); }
} /// <summary>
/// 医师
/// </summary>
public string Doctor
{
get { return doctor; }
set { doctor = value; RaisePropertyChanged(); }
} /// <summary>
/// 住院天数
/// </summary>
public string Day
{
get { return day; }
set { day = value; RaisePropertyChanged(); }
} /// <summary>
/// 住院时间
/// </summary>
public string Time
{
get { return time; }
set { time = value; RaisePropertyChanged(); }
} }

后台View 实现代码:

public class MainViewModel : ViewModelBase
{
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
DoginfoModelList = new ObservableCollection<DogInfo>();
InitLoadPageList();
} private void InitLoadPageList()
{
for (int i = ; i < ; i++)
{
DoginfoModelList.Add(new DogInfo()
{
Info = "小贱贱 男 3岁",
TypeName = "急诊",
Code = "狗狗编号:L0317",
BedNumber = "床号:01",
Doctor = "主治医师:贾静",
Day = "住院编号:37天",
Time = "住院时间:" + DateTime.Now.ToString("yyyy-MM-dd")
});
}
} private ObservableCollection<DogInfo> doginfoModelList; /// <summary>
/// 狗狗信息列表
/// </summary>
public ObservableCollection<DogInfo> DoginfoModelList
{
get { return doginfoModelList; }
set
{
doginfoModelList = value;
RaisePropertyChanged();
}
}
}

最后, 在首页添加用户控件、在加载时给主窗体进行DataContext绑定代码:

/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
MainViewModel vm;
public MainWindow()
{
InitializeComponent();
vm = new MainViewModel();
this.DataContext = vm;
} }

最后的局部显示效果图如下:

 PS:  喜欢的文章点个赞吧,  另外源代码链接:点我下载

WPF MVVM示例自定义模板数据绑定的更多相关文章

  1. WPF MVVM 之理解(数据绑定)

    (申明:最近在做一个练习,写点东西,谨供参考.) 1.界面展示:其中的布局和样式就不说了,重点在MVVM架构和数据绑定(Model层使用EF(Entity Framework)实体框架,不做介绍). ...

  2. WPF Step By Step 自定义模板

    WPF Step By Step 自定义模板 回顾 上一篇,我们简单介绍了几个基本的控件,本节我们将讲解每个控件的样式的自定义和数据模板的自定义,我们会结合项目中的具体的要求和场景来分析,给出我们实现 ...

  3. (ZZ)WPF经典编程模式-MVVM示例讲解

    http://www.cnblogs.com/xjxz/archive/2012/11/14/WPF.html 本篇从两个方面来讨论MVVM模式: MVVM理论知识 MVVM示例讲解 一,MVVM理论 ...

  4. WPF MVVM从入门到精通3:数据绑定

    原文:WPF MVVM从入门到精通3:数据绑定   WPF MVVM从入门到精通1:MVVM模式简介 WPF MVVM从入门到精通2:实现一个登录窗口 WPF MVVM从入门到精通3:数据绑定 WPF ...

  5. WPF MVVM+EF增删改查 简单示例(二) 1对1 映射

    WPF MVVM+EF增删改查 简单示例(一)实现了对学生信息的管理. 现在需求发生变更,在录入学生资料的时候同时需要录入学生的图片信息,并且一名学生只能有一张图片资料.并可对学生的图片资料进行更新. ...

  6. 数字IC设计入门必备——VIM自定义模板调用与VCS基本仿真操作示例

    一.前言 毕业论文答辩结束,闲下来写篇文章.芯片研发人员都在Linux系统下借助各种EDA工具和代码语言完成工作,因此提高代码开发效率,熟练运用开发工具是十分必要的.本文讲述VIM编辑神器的veril ...

  7. WPF MVVM模式的一些理解

    /*本文转自 http://www.cnblogs.com/sirkevin/archive/2012/11/28/2793471.html */ 使用WPF+Mvvm开发一年多,期间由于对Mvvm模 ...

  8. WPF/MVVM Quick Start Tutorial - WPF/MVVM 快速入门教程 -原文,翻译及一点自己的补充

    转载自 https://www.codeproject.com/articles/165368/wpf-mvvm-quick-start-tutorial WPF/MVVM Quick Start T ...

  9. WPF自学入门(十)WPF MVVM简单介绍

     前面文章中,我们已经知道,WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,WPF会自动发出通知去更新UI. 我们不管 ...

随机推荐

  1. 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】

    [063-Unique Paths II(唯一路径问题II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Follow up for "Unique Pa ...

  2. Python列表插入字典(转)

    https://blog.csdn.net/qq_29721419/article/details/70310183

  3. BZOJ 4385 单调队列

    思路: 对于每一个r 要找最小的符合条件的l最优 这时候就要找在这个区间中 d长度的和的最大值 用单调队列更新就好了 //By SiriusRen #include <cstdio> #i ...

  4. HDU 5379 Mahjong tree dfs+组合数学

    题意:给你一棵树来分配号码,要求是兄弟节点连续并且每一棵子树连续. 思路:因为要求兄弟和子树都是连续的,所以自己打下草稿就可以发现如果一个节点有3个或3个以上的非叶子结点,那么就无论如何也不能达到目的 ...

  5. excel导入数据的

    .aspx 文件 <form id="form1" runat="server"> <div> <asp:FileUpload I ...

  6. OpenSUSE42.3 leap 开启ssh登陆

    一.产看ssh是否安装 OpenSUSE:~ # rpm -qa | grep ssh libssh2-1-1.4.3-18.3.x86_64openssh-askpass-1.2.4.1-12.1. ...

  7. 【Docker端口映射】

    Docker端口映射即将容器内开放的端口映射到宿主机端口,以实现外部网络的访问. 首先,我们先下载用于测试端口映射的镜像: [root@fedora ~]# docker pull training/ ...

  8. PHP抓取网页内容的几种方法

    方法1: 用file_get_contents 以get方式获取内容 <?php $url='http://www.domain.com/?para=123'; $html = file_get ...

  9. request中文乱码解决

    String str = new String(request.getParameter("参数名").getBytes("iso-8859-1"), &quo ...

  10. ASP.NET通过JavaScript实现Button 的Enabled=false

    正常代码控制无法满足需求,所以记录一下方法: <input id="Button5" onclick=" CX()" type="button& ...