C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: WPFのDataGridヘッダにチェックボックス


(過去ログ 132 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■78029 / inTopicNo.1)  WPFのDataGridヘッダにチェックボックス
  
□投稿者/ あると (1回)-(2015/12/08(Tue) 22:23:38)

分類:[C#] 

WPFのDataGridでヘッダにチェックボックスを配置したいのですが、うまくいきません。
DataGridのItemsSourceはDataTable.DefaultViewを設定しようと考えています。

DataTableのカラムの型がboolであれば、ヘッダ部とボディ部にそれぞれチェックボックスを配置したいです。
以下がコードですが、Template = new CheckBox() { }が変換できませんとなります。
xamlでは
<DataGridTemplateColumn.Header>
<CheckBox Checked="CheckBox_Checked" Unchecked="CheckBox_Checked"></CheckBox>
</DataGridTemplateColumn.Header>
と書くようなのですが・・・どう記述すればよいのでしょうか。

DataTable dt = GetDataTable();

foreach (DataColumn column in dt.Columns)
{
Type type = column.DataType;
if (type == typeof(bool))
{
var template = new DataTemplate() { DataType = typeof(bool), Template = new CheckBox() { } };
this.dataGrid.Columns.Add(new DataGridCheckBoxColumn() { Header = column.ColumnName, HeaderTemplate = template });
}
else
{
this.dataGrid.Columns.Add(new DataGridTextColumn() { Header = column.ColumnName });
}
}
引用返信 編集キー/
■78034 / inTopicNo.2)  Re[1]: WPFのDataGridヘッダにチェックボックス
□投稿者/ はちいちぜろ (3回)-(2015/12/09(Wed) 06:52:59)
No78029 (あると さん) に返信

xamlでやらないのはなぜなのかと、ヘッダーのチェックボックスの役割が不明なのですが。
昔、VBでコードからのやり方を少しだけかじったことをC#で書き直したものです、
あんまりよいコードではないと思いますが手がかりくらいにはなるかなと?
手がかりにすらならなければごめんなさいです。


FrameworkElementFactory checkBoxFrameworkElement = new FrameworkElementFactory(typeof(CheckBox));
DataTemplate template = new DataTemplate();
template.VisualTree = checkBoxFrameworkElement;

現在の自分はMVVMをかじってますので上記のようなことはしません。
引用返信 編集キー/
■78035 / inTopicNo.3)  Re[2]: WPFのDataGridヘッダにチェックボックス
□投稿者/ あると (2回)-(2015/12/09(Wed) 08:31:49)
はちいちぜろ様ありがとうございます。

無事やりたいことができました。

>xamlでやらないのはなぜなのか
DataTableのカラム型によってDataGridを生成したいです。
bool型の場合はチェック(ヘッダもチェックあり)
string型の場合はテキスト
XAMLでは可変のカラムに対応できるものがないように思えます。


>ヘッダーのチェックボックスの役割
ボディ部にあるチェックボックスの切り替えです。
チェックすればボディ部のチェックボックスをすべてチェックします。

引用返信 編集キー/
■78037 / inTopicNo.4)  Re[3]: WPFのDataGridヘッダにチェックボックス
□投稿者/ Hongliang (380回)-(2015/12/09(Wed) 10:55:25)
> DataTableのカラム型によってDataGridを生成したいです。
> bool型の場合はチェック(ヘッダもチェックあり)
> string型の場合はテキスト
> XAMLでは可変のカラムに対応できるものがないように思えます。

AutoGenerateColumnsプロパティをtrueにして、AutoGeneratingColumnイベントで調整するという手段もあります。
あと、テンプレートの類は、WindowやApplicationのResourcesにXAMLで定義しておくといいでしょう。コードからは以下のように参照できます。
var template = (DataTemplate)this.FindResource(keyName);
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -