質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

5670閲覧

DataGridへのBindingでの表示が重複する

kkg_No_05

総合スコア13

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2020/04/24 01:35

前提・実現したいこと

Bindingの勉強をしています。
DataGridへのBindingをしてみたところ、思ったように表示されません。
下記の様に重複して表示されてしまいます。

NameCodeEnableData_NameData_CodeData_Enable
AAAaaa111AAAaaa111

<DataGrid.Columns>で指定した列(左3列)のみを表示したいのですが、どうすればよいでしょうか?

該当のソースコード

XAML

1<DataGrid x:Name="dataGrid" Margin="10"> 2 <DataGrid.Columns> 3 <DataGridTextColumn Header="Name" Width="80" 4 Binding="{Binding Data_Name}" /> 5 <DataGridTextColumn Header="Code" Width="100" 6 Binding="{Binding Data_Code}" /> 7 <DataGridTextColumn Header="Enable" Width="*" 8 Binding="{Binding Data_Enable}" /> 9 </DataGrid.Columns> 10</DataGrid>

C#

1public ObservableCollection<DataGrid_Data> Source_DG = new ObservableCollection<DataGrid_Data>(); 2 3public MainWindow() 4{ 5 InitializeComponent(); 6 7 string[] ItemNames = {"AAA", "BBB", "CCC", "DDD"}; 8 string[] ItemCodes = { "aaa", "bbb", "ccc", "ddd" }; 9 string[] ItemEnables = { "111", "222", "333", "444" }; 10 11 for(int i = 0; i < ItemNames.Length; i++) 12 { 13 Source_DG.Add(new DataGrid_Data(ItemNames[i], ItemCodes[i], ItemEnables[i]) { }); 14 } 15 16 dataGrid.ItemsSource = Source_DG; 17} 18 19public class DataGrid_Data 20{ 21 public string Data_Name { get; set; } 22 public string Data_Code { get; set; } 23 public string Data_Enable { get; set; } 24 25 public DataGrid_Data(string Name, string Code, string Enable) 26 { 27 Data_Name = Name; 28 Data_Code = Code; 29 Data_Enable = Enable; 30 } 31}

試したこと

・<DataGrid.Columns> </DataGrid.Columns> を削除すると、上図の右3列のみが表示され、データも表示される。

・dataGrid.ItemsSource = Source_DG; を削除すると、上図の左3列のみが表示されるが、データは表示されない。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/04/24 01:53

DataGrid.AutoGenerateColumns がtrue(既定値)のままになっていませんか?
kkg_No_05

2020/04/24 02:02

dodox86 様 ありがとうございます。 AutoGenerateColumns をfalseにすることで、解決しました。
dodox86

2020/04/24 02:05

良かったです。ではその旨を回答に記載して、自己解決で質問を閉じてください。
guest

回答1

0

自己解決

XAML

1<DataGrid x:Name="dataGrid" Margin="10"> 2

XAML

1<DataGrid x:Name="dataGrid" Margin="10" AutoGenerateColumns = "False"> 2

とすることで、解決しました。

投稿2020/04/24 02:32

kkg_No_05

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問