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

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

 

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

功能阐述 

就上面那图片

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

 

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

WPF (DataGridRowHeaderStyle)实现自义定行样式 并绑定数据不支持上下文绑定  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)实现自义定行样式 并绑定数据

上一篇:C# WPF实用的注册窗体


下一篇:Windows10 安装kali linux子系统