【问题标题】:Filling WPF DataGrid in C# with a Dictionary <String,String>在 C# 中使用 Dictionary <String,String> 填充 WPF DataGrid
【发布时间】:2011-07-09 10:22:45
【问题描述】:

我想在 C# 中用字典填充我的 DataGrid。 我已经将我的 Dictionary 设置为 DataGrid 的 ItemsSource。 但是没有数据显示... 我还将 AutoGenerateColumns 设置为 true。 错误在哪里? 提前致谢

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    尝试明确指定列:

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

    【讨论】:

      【解决方案2】:

      以下内容对我有用。您不需要显式设置列。

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

      【讨论】:

        【解决方案3】:

        确保 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>
        

        【讨论】:

          猜你喜欢
          • 2022-01-12
          • 1970-01-01
          • 2020-10-28
          • 1970-01-01
          • 2012-06-16
          • 1970-01-01
          • 2012-03-01
          • 1970-01-01
          • 2011-03-06
          相关资源
          最近更新 更多