2011-03-05 16 views

Respuesta

22

intenta especificar las columnas de forma explícita:

<DataGrid.Columns> 
    <DataGridTextColumn Header="Key" Binding="{Binding Key}" /> 
    <DataGridTextColumn Header="Value" Binding="{Binding Value}" /> 
</DataGrid.Columns> 
5

Los siguientes trabajos para mí. No necesita establecer columnas explícitamente.

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> 

modelo de vista

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"); 
     } 
    } 
} 
0

Asegúrese de que AutoGenerateColumns se establece en False.

<DataGrid 
       AutoGenerateColumns="False" 
       ItemsSource="{Binding MyDictionary}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Key" Binding="{Binding Key}" /> 
      <DataGridTextColumn Header="Value" Binding="{Binding Value}" /> 
     </DataGrid.Columns> 
    </DataGrid> 
Cuestiones relacionadas