【发布时间】:2011-07-09 10:22:45
【问题描述】:
我想在 C# 中用字典填充我的 DataGrid。 我已经将我的 Dictionary 设置为 DataGrid 的 ItemsSource。 但是没有数据显示... 我还将 AutoGenerateColumns 设置为 true。 错误在哪里? 提前致谢
【问题讨论】:
我想在 C# 中用字典填充我的 DataGrid。 我已经将我的 Dictionary 设置为 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>
视图模型
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>
【讨论】: