【问题标题】:Binding data to a data grid column将数据绑定到数据网格列
【发布时间】:2016-11-13 20:00:05
【问题描述】:

我是 WPF 新手,今天刚学习数据绑定,所以我可能有一些基本错误。

目标: 我想要数据网格中的一列,其功能类似于组合框列,显示字符串列表中的所有项目。

XAML:

<DataGrid  x:Name="dataGrid" AutoGenerateColumns="False">
   <DataGrid.Columns>
      <DataGridComboBoxColumn   Header="CitiesColumn" ItemsSource="{Binding Cities}/">
   </DataGrid.Columns>
</DataGrid>

代码隐藏:

ObjectModel 类型:

class CitiesModel 
{
    private List<string> _Cities;
    public List<string> Cities { get { return _Cities; } set { _Cities = value ; } }
    public CitiesModel()
    {
        Cities = new List<string>
        {
            "Berlin",
            "Rome",
            "Paris",
            "Barcelona"
        }; 
    }
}

window.cs 文件:

public partial class MainWindow : Window
{
    CitiesModel Cm;
    public MainWindow()
    {
        Cm = new CitiesModel();
        DataContext = Cm;
        InitializeComponent();
    }
}

它根本没有显示任何数据,甚至网格中的单元格也没有。 当我在常规组合框上尝试相同的代码时,它显示了所有数据

XAML:

<ComboBox  ItemsSource="{Binding Cities}"/>

我在网上搜索并看到了一种使用DataGridTemplateColumn 的方法 而不是组合框列,这样我什至看不到列标题。

XAML:

<DataGrid Margin="44,65,52,-24" AutoGenerateColumns="False">
    <DataGridTemplateColumn Header="Street Address">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ComboBox ItemsSource="{Binding Cities}"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

谢谢。

【问题讨论】:

  • 关于 ComboBoxColumn ItemsSource 绑定的几十个问题重复...
  • 你还没有绑定 DataGrid 的 ItemsSource。

标签: c# wpf datagrid datagridcomboboxcolumn


【解决方案1】:
  1. 绑定DataGridItemsSource,否则连物品都没有。
  2. 数据网格列中的绑定具有与网格本身不同的DataContext,即上下文是当前行。因此,如果您想绑定到另一个上下文,您必须显式更改 绑定源

【讨论】:

  • 感谢您的回答,我绑定了数据网格的 ItemsSource,现在我可以看到一些单元格,但它们仍然没有绑定到 Cities 属性,您能不能给我看一个小例子你写的2点怎么实现?
  • 没有。阅读 MSDN 上的绑定文档/概述或搜索 stackoverflow,这里有任何示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
  • 2012-06-13
  • 2022-01-03
  • 2021-07-12
  • 1970-01-01
  • 2011-01-31
相关资源
最近更新 更多