C#のListViewで列のタイトルを変える
C#のWPFの方のListViewのグリッド表示モードで、列のヘッダのタイトルをコード側から変えてみました。
目次
アプリ実行中にヘッダの表示を変えない場合
アプリ実行中に列のヘッダのタイトルを変える必要が無い場合は、XAMLで指定してしまうのが楽でしょう。
例えば、下記のXAMLでは列のヘッダ要素(GridViewColumnHeader)に「Field1」「Field2」というタイトルを設定しています。GridViewColumnHeaderクラスのContentプロパティが、その列のヘッダに表示されるわけですね。
<Window x:Class="listview_trial.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:listview_trial"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="200">
<Grid>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumnHeader Name="columnheaderField1" Content="Field1" />
</GridViewColumn>
<GridViewColumn>
<GridViewColumnHeader Name="columnheaderField2" Content="Field2" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
これを実行すると下図の様になります。
表の列のヘッダに、「Field1」「Field2」と表示されてますね。
アプリ実行中にヘッダのタイトルを切り替えたい場合
アプリ実行中にユーザーの操作に従って表の表示内容を変えたい場合があります。その際、表示の中身についてはバインドしているデータを書き換えればバインディングによって表示が更新されます。
同時に列のヘッダの表示も切り替えたいですよね。プログラムのコードでListViewの列ヘッダの表示を変えるにはどうすれば良いでしょうか。
前述のようにGridViewColumnHeaderクラスのContentプロパティが列ヘッダに表示されるので、そのプロパティを書き換えてみます。
まず、XAMLのGridViewColumnHeader要素にName属性を設定します。前述のXAMLの例を参照してください。このNameで列ヘッダを識別します。
コードの例です。
using System.Windows;
namespace listview_trial
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
columnheaderField1.Content = "フィールド1";
columnheaderField2.Content = "フィールド2";
}
}
}
起動直後にヘッダの表示を変更するプログラムです。実際には、ボタンとかのクリックイベントに書いたりすると思います。
XAMLの方でNameを設定しておくと、VisualStudioではIntelliSense様がNameの設定値(この例ではcolumnheaderField1とcolumnheaderField2)を入力候補として表示してくれます。便利ですね。
これを実行すると下図の様になります。
バインディングしているデータの変更と同時にGridViewColumnHeaderのContentも変更することで、ListViewに表示している表を切り替えたような感じになります。
更新日
公開日
広告
C#のコントロールカテゴリの投稿
- C#でコレクションの要素の変更をバインド先のコントロールに反映する方法
- C#のComboBoxを使ってみた
- C#のDataGridで右クリックメニューを作ってみた
- C#のDataGridの罫線と背景色を変えてみた
- C#のListBoxでCheckBoxを並べてみた
- C#のListBoxを使ってみた
- C#のListViewで列のタイトルを変える
- C#のListViewで選択したアイテムを取得する方法
- C#のListViewに文字を入力する方法
- C#のListViewのヘッダーをクリックして列をソートする方法
- C#のListViewを使ってみた
- C#のRadioButtonで選択された項目を調べる(foreach編)
- C#のRadioButtonを試してみた
- C#のTextBoxで最下行に自動でスクロールする方法
- C#のWPFのコントロール一覧
- C#のスライダコントロールを試してみた
- C#のタブをコードから切り替える
- C#のメニューのイベントを1つにまとめてみた