【问题标题】:How can I define my own columns in a WPF DataGrid?如何在 WPF DataGrid 中定义我自己的列?
【发布时间】:2010-10-15 06:24:36
【问题描述】:

我有一个 AutoGenerateColumns WPF-DataGrid 在代码隐藏中绑定到 LINQ-to-SQL,它工作正常。

但是当我取消 AutoGenerateColumns 并定义自己的列时,它告诉我“在使用 ItemsSource 之前,项目集合必须为空。

但我没有在我的 XAML 中绑定 ItemSource,所以我不明白为什么它不是空的。 我需要更改哪些内容才能定义自己的列?

XAML:

<UserControl x:Class="TestDataGrid566.AppPages.ManageCustomers"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
             Loaded="UserControl_Loaded">
    <toolkit:DataGrid x:Name="TheDataGrid" 
                      CanUserAddRows="False"
                      AlternatingRowBackground="#ddd"
                      CanUserSortColumns="true"
                      PreviewKeyDown="TheDataGrid_PreviewKeyDown"
                      AutoGenerateColumns="False"
                      RowEditEnding="TheDataGrid_RowEditEnding">

        <toolkit:DataGridTextColumn Header="Contact Name" Width="SizeToCells"  
                                    Binding="{Binding ContactName}" 
                                    IsReadOnly="False"/>
    </toolkit:DataGrid>
</UserControl>

代码隐藏:

public partial class ManageCustomers : UserControl
{
    private NorthwindDataContext _db = new NorthwindDataContext();

    public ManageCustomers()
    {
        InitializeComponent();
    }

    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        LoadData();
    }

    public void LoadData()
    {
        var customers = from c in _db.Customers
                        select c;
        TheDataGrid.ItemsSource = customers.ToList();
    }
}

【问题讨论】:

    标签: .net linq-to-sql xaml


    【解决方案1】:

    您试图将该列直接放入 DataGrid (因此它试图将该列放入网格的 Items 集合中,这解释了您的错误)。你需要把它放在Columns 集合中:

    <toolkit:DataGrid x:Name="TheDataGrid" 
                              CanUserAddRows="False"
                              AlternatingRowBackground="#ddd"
                              CanUserSortColumns="true"
                              PreviewKeyDown="TheDataGrid_PreviewKeyDown"
                              AutoGenerateColumns="False"
                              RowEditEnding="TheDataGrid_RowEditEnding">
        <toolkit:DataGrid.Columns>        
            <toolkit:DataGridTextColumn Header="Contact Name" Width="SizeToCells"  
                                           Binding="{Binding ContactName}" 
                                           IsReadOnly="False"/>
        </toolkit:DataGrid.Columns>
    </toolkit:DataGrid>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 2014-02-01
      • 2020-11-26
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2014-01-03
      相关资源
      最近更新 更多