[解決済み] WPFでGridViewColumnのデータを自動サイズ調整し、右揃えにする方法は?
2023-03-25 02:39:17
質問
どうすればよいのでしょうか。
- ID列のテキストを右寄せにする。
- 各カラムを、最も長い可視データを持つセルのテキストの長さに応じて自動サイズにする?
以下はそのコードです。
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}" Width="40"/>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="100" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/>
</GridView>
</ListView.View>
</ListView>
部分的な回答です。
Kjetilさんありがとうございます。GridViewColumn.CellTemplateはうまく機能し、Auto Widthももちろん機能しますが、ObservativeCollection "Collection"が列幅より長いデータで更新されると、列サイズは自ら更新しないのでデータの初期表示に対するソリューションに過ぎないのですね。
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}" TextAlignment="Right" Width="40"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="Auto" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
どのように解決するのですか?
各カラムをオートサイズにするには、GridViewColumnにWidth="Auto"を設定すればよいです。
ID列のテキストを右寄せにするには、TextBlockを使用してセルテンプレートを作成し、TextAlignmentを設定します。次に、ListViewItem.HorizontalContentAlignmentを設定し(ListViewItemにセッターを持つスタイルを使用)、セルテンプレートがGridViewCell全体を埋めるようにします。
もしかしたら、もっと簡単な解決策があるかもしれませんが、これでうまくいくはずです。
注意してください。 この解決策には HorizontalContentAlignment=Stretchの両方が必要です。 を Window.Resources に記述し TextAlignment=Right をCellTemplateに記述しています。
<Window x:Class="WpfApplication6.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</Window.Resources>
<Grid>
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="40">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="Auto" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
関連
-
[解決済み] XAMLで複数のバリューコンバータを連結する方法はありますか?
-
[解決済み] ItemsControlの仮想化?
-
[解決済み] WPFのRounded Cornerコンテナを作成するには?
-
[解決済み] DataTemplateから親DataContextにアクセスする
-
[解決済み] WPFの星は何をしているのか(Width="100*")
-
[解決済み] WPFのテキストブロック、テキスト属性の改行について
-
[解決済み] WPF 自分自身へのバインド
-
[解決済み] xaml wpfでテキストボックスにフォーカスを設定する
-
[解決済み] WPF-ラベルの改行?
-
[解決済み] WPFのStringFormatによるバインディングがToolTipで機能しない件
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 静的プロパティへのバインディング
-
[解決済み] WPFでイベント処理のためにリソース辞書の後ろにコードを設定することは可能ですか?
-
[解決済み] データバインディングでWPFハイパーリンクのテキストを設定するにはどうすればよいですか?
-
[解決済み] WPF ListViewの選択範囲オフ
-
[解決済み] WPFのRounded Cornerコンテナを作成するには?
-
[解決済み] WPFの星は何をしているのか(Width="100*")
-
[解決済み] WPF標準のタブコントロールに選択されたタブが変更されたイベントはありますか?
-
[解決済み] WPFのバインディングモードにはどのようなものがありますか?
-
[解決済み] wpfのウィンドウ内の要素の絶対位置の取得
-
[解決済み] サイズ変更可能なウィンドウから最小化ボタンと最大化ボタンを削除するには?