我想用Dictonary在C#中填充我的DataGrid。 我已经将Dictionary设置为DataGrid的ItemsSource。 但是没有显示数据...... 我还将AutoGenerateColumns设置为true。 哪里出错了? 提前致谢
答案 0 :(得分:24)
尝试明确指定列:
<DataGrid.Columns>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" />
<DataGridTextColumn Header="Value" Binding="{Binding Value}" />
</DataGrid.Columns>
答案 1 :(得分:7)
以下适用于我。您不需要明确设置列。
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>
视图模型
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");
}
}
}
答案 2 :(得分:0)
确保将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>