前提・実現したいこと
WPFでシステムを作っており、表作成で躓いてしまいました。
表を作成し、その中に情報を入れていくページを作成したいと思い、試行錯誤したのですが、なかなかうまくいかず質問させていただきます。
↑このような表を作ろうと思っています。
ヘッダーを複数個作る方法を調べてみたのですがいまいちわかりませんでした。
補足情報(FW/ツールのバージョンなど)
Visual Studio 2019
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/25 10:08
2020/11/25 11:05
2020/11/26 00:05 編集
回答1件
0
ベストアンサー
ヘッダーのリサイズや入れ替えをさせないのであれば、Grid等で偽のヘッダーをでっちあげます。
できるだけ画像に寄せましたが、こんな感じでどうでしょうか?
xml
1<Window 2 x:Class="Questions306366.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:collections="clr-namespace:System.Collections;assembly=mscorlib" 6 xmlns:sys="clr-namespace:System;assembly=mscorlib" 7 Width="800" 8 Height="450"> 9 <Window.Resources> 10 <!-- 特に意味はない xamlのみ縛り --> 11 <collections:ArrayList x:Key="data"> 12 <collections:ArrayList> 13 <sys:Int32>1</sys:Int32> 14 <sys:String>一郎</sys:String> 15 <sys:DateTime>1998-01-01</sys:DateTime> 16 <sys:Int32>22</sys:Int32> 17 <sys:String>あ</sys:String> 18 <sys:String>い</sys:String> 19 <sys:String>う</sys:String> 20 <sys:String>え</sys:String> 21 </collections:ArrayList> 22 <collections:ArrayList> 23 <sys:Int32>2</sys:Int32> 24 <sys:String>次郎</sys:String> 25 <sys:DateTime>1999-02-02</sys:DateTime> 26 <sys:Int32>21</sys:Int32> 27 <sys:String>お</sys:String> 28 <sys:String>か</sys:String> 29 <sys:String>き</sys:String> 30 <sys:String>く</sys:String> 31 </collections:ArrayList> 32 </collections:ArrayList> 33 34 <Style TargetType="DataGridColumnHeader"> 35 <Setter Property="HorizontalContentAlignment" Value="Center" /> 36 </Style> 37 <Style x:Key="CellStyleRight" TargetType="DataGridCell"> 38 <Setter Property="TextBlock.TextAlignment" Value="Right" /> 39 </Style> 40 </Window.Resources> 41 42 <Grid> 43 <DockPanel> 44 <!-- 偽ヘッダー --> 45 <Grid 46 Margin="1,1,1,0" 47 Cursor="Arrow" 48 DockPanel.Dock="Top" 49 ForceCursor="True"> 50 <Grid.ColumnDefinitions> 51 <ColumnDefinition Width="Auto" /> 52 <ColumnDefinition Width="Auto" /> 53 <ColumnDefinition Width="Auto" /> 54 <ColumnDefinition Width="Auto" /> 55 <ColumnDefinition Width="Auto" /> 56 <ColumnDefinition Width="Auto" /> 57 <ColumnDefinition Width="Auto" /> 58 <ColumnDefinition Width="Auto" /> 59 <ColumnDefinition /> 60 </Grid.ColumnDefinitions> 61 <Grid.RowDefinitions> 62 <RowDefinition /> 63 <RowDefinition /> 64 <RowDefinition /> 65 </Grid.RowDefinitions> 66 <DataGridColumnHeader Grid.RowSpan="3" Width="{Binding ActualWidth, ElementName=NumberColumn}" Content="番号" /> 67 <DataGridColumnHeader 68 Grid.Row="1" 69 Grid.RowSpan="2" 70 Grid.Column="1" 71 Width="{Binding ActualWidth, ElementName=NameColumn}" 72 Content="名前" /> 73 <DataGridColumnHeader 74 Grid.Row="1" 75 Grid.RowSpan="2" 76 Grid.Column="2" 77 Width="{Binding ActualWidth, ElementName=DOBColumn}" 78 Content="生年月日" /> 79 <DataGridColumnHeader 80 Grid.Row="1" 81 Grid.RowSpan="2" 82 Grid.Column="3" 83 Width="{Binding ActualWidth, ElementName=AgeColumn}" 84 Content="年齢" /> 85 <DataGridColumnHeader 86 Grid.Row="2" 87 Grid.Column="4" 88 Width="{Binding ActualWidth, ElementName=DDDDColumn}" 89 Content="DDDD" /> 90 <DataGridColumnHeader 91 Grid.Row="2" 92 Grid.Column="5" 93 Width="{Binding ActualWidth, ElementName=EEEEColumn}" 94 Content="EEEE" /> 95 <DataGridColumnHeader 96 Grid.Row="2" 97 Grid.Column="6" 98 Width="{Binding ActualWidth, ElementName=FFFFColumn}" 99 Content="FFFF" /> 100 <DataGridColumnHeader 101 Grid.Row="2" 102 Grid.Column="7" 103 Width="{Binding ActualWidth, ElementName=GGGGColumn}" 104 Content="GGGG" /> 105 106 <DataGridColumnHeader Grid.Column="1" Grid.ColumnSpan="3" Content="個人情報" /> 107 <DataGridColumnHeader Grid.Column="4" Grid.ColumnSpan="4" Content="AAAA" /> 108 <DataGridColumnHeader 109 Grid.Row="1" 110 Grid.Column="4" 111 Grid.ColumnSpan="2" 112 Content="BBBB" /> 113 <DataGridColumnHeader 114 Grid.Row="1" 115 Grid.Column="6" 116 Grid.ColumnSpan="2" 117 Content="CCCC" /> 118 <Border /> 119 </Grid> 120 121 <DataGrid AutoGenerateColumns="False" HeadersVisibility="None" ItemsSource="{StaticResource data}"> 122 <DataGrid.Columns> 123 <DataGridTextColumn 124 x:Name="NumberColumn" 125 Width="90" 126 Binding="{Binding [0]}" 127 CellStyle="{StaticResource CellStyleRight}" /> 128 <DataGridTextColumn x:Name="NameColumn" Width="90" Binding="{Binding [1]}" /> 129 <DataGridTextColumn 130 x:Name="DOBColumn" 131 Width="90" 132 Binding="{Binding [2], StringFormat=M月d日}" 133 CellStyle="{StaticResource CellStyleRight}" /> 134 <DataGridTextColumn 135 x:Name="AgeColumn" 136 Width="90" 137 Binding="{Binding [3]}" 138 CellStyle="{StaticResource CellStyleRight}" /> 139 <DataGridTextColumn x:Name="DDDDColumn" Width="90" Binding="{Binding [4]}" /> 140 <DataGridTextColumn x:Name="EEEEColumn" Width="90" Binding="{Binding [5]}" /> 141 <DataGridTextColumn x:Name="FFFFColumn" Width="90" Binding="{Binding [6]}" /> 142 <DataGridTextColumn x:Name="GGGGColumn" Width="90" Binding="{Binding [7]}" /> 143 </DataGrid.Columns> 144 </DataGrid> 145 </DockPanel> 146 </Grid> 147</Window>
ソート機能を生かすにはDataGridColumnHeader
のClick
を拾い、ソースのソートをしてください。
小さいへ
の字を出すには、↓はset
がないのでいじれませんが、
DataGridColumnHeader.SortDirection プロパティ (System.Windows.Controls.Primitives) | Microsoft Docs
DataGridColumnHeader
の子孫にいるこちらをいじれば表示されました。
DataGridHeaderBorder.SortDirection プロパティ (Microsoft.Windows.Themes) | Microsoft Docs
投稿2020/11/26 08:43
編集2023/07/25 13:18総合スコア9855
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。