C#のDataGridに辞書を入力したいと思います。すでに辞書をDataGridのItemsSourceとして設定しています。しかし、データは表示されません... AutoGenerateColumnsもtrueに設定しました。間違いはどこにありますか?前もって感謝します
列を明示的に指定してみてください。
<DataGrid.Columns>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" />
<DataGridTextColumn Header="Value" Binding="{Binding Value}" />
</DataGrid.Columns>
以下は私のために働きます。列を明示的に設定する必要はありません。
XAML
<Window x:Class="DictionaryDataGridDemo.SingleDictView"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DictionaryDataGridDemo"
Title="SingleDictView"
Width="525"
Height="350">
<Window.DataContext>
<local:SingleDictViewModel />
</Window.DataContext>
<Grid>
<DataGrid HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AutoGenerateColumns="True"
ItemsSource="{Binding MyDictionary}">
<!--<DataGrid.Columns>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" />
<DataGridTextColumn Header="Value" Binding="{Binding Value}" />
</DataGrid.Columns>-->
</DataGrid>
</Grid>
</Window>
ViewModel
using System.Collections.Generic;
namespace DictionaryDataGridDemo
{
public class SingleDictViewModel
{
public Dictionary<double, string> MyDictionary { get; set; }
public SingleDictViewModel()
{
MyDictionary = new Dictionary<double, string>();
MyDictionary.Add(100, "A100");
MyDictionary.Add(200, "B200");
MyDictionary.Add(300, "C300");
}
}
}
AutoGenerateColumnsがFalseに設定されていることを確認してください。
<DataGrid
AutoGenerateColumns="False"
ItemsSource="{Binding MyDictionary}">
<DataGrid.Columns>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" />
<DataGridTextColumn Header="Value" Binding="{Binding Value}" />
</DataGrid.Columns>
</DataGrid>