Заполнение WPF DataGrid в C # словарем - PullRequest
18 голосов
/ 05 марта 2011

Я хочу заполнить свою DataGrid в C # с помощью Dictonary. Я уже установил свой словарь как ItemsSource DataGrid. Но данные не отображаются ... Я также установил для AutoGenerateColumns значение true. Где ошибка? Заранее спасибо

Ответы [ 3 ]

24 голосов
/ 05 марта 2011

Попробуйте указать столбцы явно:

<DataGrid.Columns>
    <DataGridTextColumn Header="Key" Binding="{Binding Key}" />
    <DataGridTextColumn Header="Value" Binding="{Binding Value}" />
</DataGrid.Columns>
7 голосов
/ 17 апреля 2015

У меня работает следующее. Вам не нужно явно устанавливать столбцы.

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 голосов
/ 31 июля 2017

Убедитесь, что 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...