2011-03-05 9 views
16

मैं अपने डेटाग्रिड को सी # में डिक्टोनरी के साथ भरना चाहता हूं। मैंने पहले ही अपना शब्दकोश डेटाग्रिड के आइटम्ससोर्स के रूप में सेट किया है। लेकिन कोई डेटा प्रदर्शित नहीं होता है ... मैंने ऑटोजेनरेट कॉलम को भी सत्य पर सेट किया है। गलती कहां है? अग्रिमएक डिक्शनरी के साथ सी # में डब्ल्यूपीएफ डेटाग्रिड भरना <स्ट्रिंग, स्ट्रिंग>

उत्तर

22

कोशिश धन्यवाद कॉलम स्पष्ट रूप से निर्दिष्ट करने के लिए:

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

मेरे लिए निम्नलिखित काम करता है। आपको कॉलम को स्पष्ट रूप से सेट करने की आवश्यकता नहीं है।

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

सुनिश्चित करें कि AutoGenerateColumns गलत पर सेट की गई है।

<DataGrid 
       AutoGenerateColumns="False" 
       ItemsSource="{Binding MyDictionary}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Key" Binding="{Binding Key}" /> 
      <DataGridTextColumn Header="Value" Binding="{Binding Value}" /> 
     </DataGrid.Columns> 
    </DataGrid> 
संबंधित मुद्दे