原文:WPF (DataGridRowHeaderStyle)实现自义定行样式 并绑定数据

功能阐述

就上面那图片

刚开始 考虑使用 RowHeaderTemplate 来实现  发现总绑定不上数据  上官网查了一下

不支持上下文绑定  fffffffffffff

只能考虑样式了  经验不足 经验不足~

直接上前后台源码了

XAML


  1. <Window
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" x:Class="WpfApplication31.MainWindow"
  5. Title="MainWindow" Height="350" Width="525">
  6. <Window.Resources>
  7. <Style x:Key="DataGridRowHeaderStyle1" TargetType="{x:Type DataGridRowHeader}">
  8. <Setter Property="Template">
  9. <Setter.Value>
  10. <ControlTemplate TargetType="{x:Type DataGridRowHeader}">
  11. <Grid Height="59.834" Width="207.908">
  12. <Grid.ColumnDefinitions>
  13. <ColumnDefinition Width="20*"/>
  14. <ColumnDefinition Width="21*"/>
  15. <ColumnDefinition Width="77*"/>
  16. </Grid.ColumnDefinitions>
  17. <Grid Grid.Column="2" HorizontalAlignment="Stretch" Height="Auto" Margin="0" VerticalAlignment="Stretch">
  18. <Grid.RowDefinitions>
  19. <RowDefinition/>
  20. <RowDefinition/>
  21. </Grid.RowDefinitions>
  22. <Grid HorizontalAlignment="Stretch" Height="Auto" Margin="0" Grid.Row="1" VerticalAlignment="Stretch">
  23. <Grid.ColumnDefinitions>
  24. <ColumnDefinition/>
  25. <ColumnDefinition/>
  26. </Grid.ColumnDefinitions>
  27. <Border BorderBrush="#FFBFBFBF" BorderThickness="0,0,1,1" Grid.ColumnSpan="1" HorizontalAlignment="Stretch" Height="Auto" VerticalAlignment="Stretch" Width="Auto" Background="White" Grid.Column="0" Margin="0">
  28. <Label Content="リーダー" HorizontalAlignment="Center" Height="Auto" Background="White" VerticalAlignment="Center" Margin="0"/>
  29. </Border>
  30. <Border BorderBrush="#FFBFBFBF" BorderThickness="0,0,1,1" Grid.ColumnSpan="1" HorizontalAlignment="Stretch" Height="Auto" VerticalAlignment="Stretch" Width="Auto" Background="White" Grid.Column="1">
  31. <Label Content="" HorizontalAlignment="Center" Height="Auto" Background="White" VerticalAlignment="Center" Margin="0"/>
  32. </Border>
  33. </Grid>
  34. <Border BorderBrush="#FFBFBFBF" BorderThickness="0,1,1,1" Grid.ColumnSpan="1" HorizontalAlignment="Stretch" Height="Auto" VerticalAlignment="Stretch" Width="Auto" Background="White" Grid.Column="0" Margin="0">
  35. <Label Content="{Binding Name}" HorizontalAlignment="Center" Height="Auto" Background="White" VerticalAlignment="Center" Margin="0"/>
  36. </Border>
  37. </Grid>
  38. <Border BorderBrush="#FFBFBFBF" BorderThickness="1" Grid.ColumnSpan="1" HorizontalAlignment="Stretch" Height="Auto" Margin="0" VerticalAlignment="Stretch" Width="Auto" Background="White">
  39. <Label Content="{Binding Num}" HorizontalAlignment="Center" Height="Auto" Background="White" VerticalAlignment="Center" Margin="0"/>
  40. </Border>
  41. <Border BorderBrush="#FFBFBFBF" BorderThickness="0,1,1,1" Grid.ColumnSpan="1" HorizontalAlignment="Stretch" Height="Auto" VerticalAlignment="Stretch" Width="Auto" Background="White" Grid.Column="1">
  42. <Label Content="{Binding Class_}" HorizontalAlignment="Center" Height="Auto" Background="White" VerticalAlignment="Center" Margin="0"/>
  43. </Border>
  44. </Grid>
  45. </ControlTemplate>
  46. </Setter.Value>
  47. </Setter>
  48. </Style>
  49. </Window.Resources>
  50. <Grid>
  51. <DataGrid x:Name="dataGrid" CanUserAddRows = "false" AutoGenerateColumns="False" Margin="10,10,0,0" RowHeaderStyle="{DynamicResource DataGridRowHeaderStyle1}" >
  52. <DataGrid.Columns>
  53. <DataGridTextColumn Header="姓名" Binding="{Binding Name}"/>
  54. <DataGridTextColumn Header="年龄" Binding="{Binding Class_}"/>
  55. </DataGrid.Columns>
  56. </DataGrid>
  57. </Grid>
  58. </Window>

后台代码


  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.ObjectModel;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. using System.Windows.Data;
  11. using System.Windows.Documents;
  12. using System.Windows.Input;
  13. using System.Windows.Media;
  14. using System.Windows.Media.Imaging;
  15. using System.Windows.Navigation;
  16. using System.Windows.Shapes;
  17. namespace WpfApplication31
  18. {
  19. /// <summary>
  20. /// MainWindow.xaml 的交互逻辑
  21. /// </summary>
  22. public partial class MainWindow : Window
  23. {
  24. public MainWindow()
  25. {
  26. InitializeComponent();
  27. dataGrid.ItemsSource = GetNameData();
  28. }
  29. ObservableCollection<NameList> listName = new ObservableCollection<NameList>();
  30. private ObservableCollection<NameList> GetNameData()
  31. {
  32. listName.Add(new NameList("市川 賞子", "リーダー", "B", 1));
  33. listName.Add(new NameList("石田", "リーダー", "C", 2));
  34. listName.Add(new NameList("安达 鮎美", "リーダー", "C", 3));
  35. return listName;
  36. }
  37. }
  38. public class NameList : INotifyPropertyChanged
  39. {
  40. public event PropertyChangedEventHandler PropertyChanged;
  41. public NameList(string name, string jOb, string class_, int num) { Name = name; Class_ = class_; JOb = jOb; Num = num; }
  42. private string name;
  43. public string Name
  44. {
  45. get { return name; }
  46. set
  47. {
  48. name = value;
  49. if (PropertyChanged != null)
  50. {
  51. PropertyChanged(this, new PropertyChangedEventArgs("Name"));
  52. }
  53. }
  54. }
  55. private int num;
  56. public int Num
  57. {
  58. get { return num; }
  59. set
  60. {
  61. num = value;
  62. if (PropertyChanged != null)
  63. {
  64. PropertyChanged(this, new PropertyChangedEventArgs("Num"));
  65. }
  66. }
  67. }
  68. private string class_;
  69. public string Class_
  70. {
  71. get { return class_; }
  72. set
  73. {
  74. class_ = value;
  75. if (PropertyChanged != null)
  76. {
  77. PropertyChanged(this, new PropertyChangedEventArgs("Class_"));
  78. }
  79. }
  80. }
  81. private string jOb;
  82. public string JOb
  83. {
  84. get { return jOb; }
  85. set
  86. {
  87. jOb = value;
  88. if (PropertyChanged != null)
  89. {
  90. PropertyChanged(this, new PropertyChangedEventArgs("JOb"));
  91. }
  92. }
  93. }
  94. }
  95. }

WPF (DataGridRowHeaderStyle)实现自义定行样式 并绑定数据的更多相关文章

  1. WPF DataGrid row background converter datagrid 行背景随绑定数据变化,转换器

    <DataGrid Grid.Row=" ItemsSource="{Binding SalesList,UpdateSourceTrigger=PropertyChange ...

  2. WPF (DataGridColumnHeader)实现自义定列头样式 并绑定数据

    原文:WPF (DataGridColumnHeader)实现自义定列头样式 并绑定数据 实现功能是这样的 自定义列头 样式 样式里的 数据来源于后台绑定 这篇就说头样式 和头样式数据绑定 思路 1) ...

  3. WPF ListView点击删除某一行并获取绑定数据

    最近在开发WPF程序时遇到一个问题,在gridview中希望实现在每一行最后添加一个删除的按钮,但是发现点击每行的button时只会触发button的点击事件,并没有选中这一行,此时调用list.Se ...

  4. WPF Datagrid 动态生成列 并绑定数据

    原文:WPF Datagrid 动态生成列 并绑定数据 说的是这里 因为列头是动态加载的 (后台for循环 一会能看到代码) 数据来源于左侧列 左侧列数据源 当然num1 属于临时的dome使用  可 ...

  5. WPF 4 DataGrid 控件(自定义样式篇)

    原文:WPF 4 DataGrid 控件(自定义样式篇)      在<WPF 4 DataGrid 控件(基本功能篇)>中我们已经学习了DataGrid 的基本功能及使用方法.本篇将继续 ...

  6. 打造自定Select样式

    打造自定Select样式 我们为什么要自定义select样式? 1.select最大的一个缺陷就是不能自定义下拉按钮的样式. 效果图: 在线演示地址: http://www.smallui.com/j ...

  7. WPF后台设置xaml控件的样式System.Windows.Style

    WPF后台设置xaml控件的样式System.Windows.Style 摘-自 :感谢 作者: IT小兵   http://3w.suchso.com/projecteac-tual/wpf-zhi ...

  8. C# DevExpress_gridControl 行号行样式

    #region 行号 /// <summary> /// 行号 /// </summary> /// <param name="sender"> ...

  9. WPF界面设计技巧(10)-样式的继承

    原文:WPF界面设计技巧(10)-样式的继承 PS:现在我的MailMail完工了,进入内测阶段了,终于可以腾出手来写写教程了哈,关于MailMail的介绍及内测程序索取:http://www.cnb ...

随机推荐

  1. python yield关键词使用总结

    python yield关键词使用总结 by:授客 QQ:1033553122 测试环境 win10 python 3.5 yield功能简介 简单来说,yield 的作用就是把一个函数变成一个 ge ...

  2. C lang:programe flow

    C language flow Xx_a Introduction C language flow,control program order. Xx_b Foundation satement:fo ...

  3. Visual Studio 开发(三):Visual Studio 使用时常见问题解决方案

    一.Error LNK2019: 无法解析的外部符号 此问题应该是Visual Studio的初学者最常碰到的问题,也是相对来说很让人头疼的问题. 注:Error LNK2019 问题在VC 6.0 ...

  4. Oracle - crfclust.bdb文件太大

    今天在检查oracle rac集群时,突然才发现服务器的根目录下面占用了很多空间,照道理不应该出现这种情况,初步猜想可能是哪个日志或跟踪文件太大导致.切换到跟目录,使用du -sh *来一层一层查看到 ...

  5. maven 上传jar包到私服仓库

    按一下形式上传jiar包 # mvn deploy:deploy-file -DgroupId=com.itextpdf -DartifactId=itextpdf -Dversion=5.5.13 ...

  6. html转换成canvas

    使用的工具是:html2canvas html2canvas(this.currentRef) .then(async (canvas) => { let url = canvas.toData ...

  7. python-参数化-(1)(手机号码)

    一.生成手机号码,此处并没有写成类或者函数形式,上代码 import random #指定手机号码前三位格式,并随机返回一个区号,关于random参数化的相关部分自行了解type_mobile = [ ...

  8. Spring 中的观察者模式

    一.Spring 中观察者模式的四个角色 1. 事件(ApplicationEvent) ApplicationEvent 是所有事件对象的父类.ApplicationEvent 继承自 jdk 的 ...

  9. EF中存储过程的使用

    存储过程即用来完成一个特定功能的一段代码.它的优缺点 优点 存储过程可封装,并隐藏复杂的商业逻辑. 存储过程可以回传值,并可以接受参数. 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与 ...

  10. 如何获取JVM堆转储文件

    堆转储是诊断与内存相关的问题(例如内存泄漏缓慢,垃圾回收问题和 java.lang.OutOfMemoryError.它们也是优化内存消耗的重要工具. 有很多很不错的的工具,例如Eclipse MAT ...