WPF 中的数据网格绑定

     2023-02-22     81

关键词:

【中文标题】WPF 中的数据网格绑定【英文标题】:Datagrid binding in WPF 【发布时间】:2011-08-14 04:01:09 【问题描述】:

我知道这已经被问过了,但我已经做了开发人员建议的几乎所有事情。

<DataGrid x:Name="Imported" VerticalAlignment="Top"
          DataContext="Binding Source=list"
          AutoGenerateColumns="False" CanUserResizeColumns="True">
    <DataGrid.Columns>                
        <DataGridTextColumn Header="ID" Binding="Binding Path=ID"/>
        <DataGridTextColumn Header="Date" Binding="Binding Path=Date"/>
    </DataGrid.Columns>
</DataGrid>

我试图在模态对话框中显示它并在模态对话框的构造函数中填充许可证列表。 但是DataGrid 中仍然没有填充任何内容。

构造函数代码:

public diagboxclass()

    List<object> list = new List<object>();
    list = GetObjectList();

public class object

    string id;
    DateTime date;
    public string ID
    
        get  return id; 
        set  id = value; 
    
    public DateTime Date
    
        get  return date; 
        set  date = value; 
    

你们觉得对象列表有什么关系吗?

【问题讨论】:

我的列表对象比上面两个没有绑定的属性更多?那会有什么不同吗? 可能不会。请分享更多您的 XAML(包括如何定义 list),以便我们进一步提供帮助。 我已经在顶部添加了代码。 @alice7 diagboxclass 是什么类型的? XAML 类containing DataGrid 是什么类型?如果 diagboxclass 在 XAML 文件的代码隐藏中,则应将 list 分配给该类的 DataContext 属性。然后,您应该能够从 XAML 中绑定到列表。 嗨,如果其中一个答案在 2011 年对您有所帮助,请将其标记为答案,谢谢 【参考方案1】:

尝试在后面的代码中这样做:

public diagboxclass()

    List<object> list = new List<object>();
    list = GetObjectList();
    Imported.ItemsSource = null;
    Imported.ItemsSource = list;

还要确保您的列表得到有效填充,并且如@Blindmeis 所述,切勿使用已在 C# 中赋予函数的单词。

【讨论】:

【参考方案2】:

如果没有看到上述对象列表,我相信您应该绑定到DataGridItemsSource 属性,而不是它的DataContext

<DataGrid x:Name="Imported" VerticalAlignment="Top"
          ItemsSource="Binding Source=list"
          AutoGenerateColumns="False" CanUserResizeColumns="True">
    <DataGrid.Columns>                
        <DataGridTextColumn Header="ID" Binding="Binding ID"/>
        <DataGridTextColumn Header="Date" Binding="Binding Date"/>
   </DataGrid.Columns>
</DataGrid>

(这假定包含 DataGrid 的元素 [UserControl 等] 具有 DataContext 绑定到包含 list 集合的对象。@987654330 @ 派生自 ItemsControl,它依赖于其 ItemsSource 属性来定义将其行绑定到的集合。因此,如果 list 不是绑定到控件的 DataContext 的对象的属性,您可能需要在DataGrid上同时设置DataContext=Binding listItemsSource=Binding list)。

【讨论】:

@alice7 然后请发布一些 XAML,显示您的 Window/UserControl/Whatever 包含网格的其余部分,并告诉我们如何定义 list。 :) 我已经删除了整个内容,只是离开了datagrid.so没有其他控件。下面是代码 iside 构造函数: List objectList = new List(); objectList = GetObjectList(); 在...的构造函数里面是什么?请编辑您的问题(单击标签下方显示的edit 链接)以包含更多代码;在评论中很难阅读。谢谢:) @alice7:您需要将该列表公开为公共属性并设置适当的 DataContext,您应该阅读this reference。 ItemsSource 属性中的绑定可能是错误的。就我而言,当我使用“Binding Source=list”声明绑定时,我没有成功。但是当我用“Binding list”声明绑定时我成功了。【参考方案3】:

请不要使用 object 作为类名:

public class MyObject //better to choose an appropriate name

    string id;
    DateTime date;
    public string ID
    
       get  return id; 
       set  id = value; 
    
    public DateTime Date
    
       get  return date; 
       set  date = value; 
    

你应该为这个类实现INotifyPropertyChanged,当然在属性设置器上调用它。否则更改不会反映在您的用户界面中。

您的Viewmodel 类/对话框类应该有一个Property 属于您的MyObject 列表。 ObservableCollection&lt;MyObject&gt; 是要走的路:

public ObservableCollection<MyObject> MyList

     get...
     set...

在您的xaml 中,您应该将Itemssource 设置为您的MyObject 集合。 (Datacontext 必须是你的对话框类!)

<DataGrid ItemsSource="Binding Source=MyList"  AutoGenerateColumns="False">
   <DataGrid.Columns>                
     <DataGridTextColumn Header="ID" Binding="Binding ID"/>
     <DataGridTextColumn Header="Date" Binding="Binding Date"/>
   </DataGrid.Columns>
</DataGrid>

【讨论】:

在我的情况下,DataGrid 的 ItemSource 应该是:ItemsSource="Binding MyList"

将 Wpf 的数据网格绑定到数据库

...问题描述】:我正在尝试将WPF的DataGrid绑定到MSSQL数据库中的表。1)首先我创建了一个App.config文件如下rrr<connectionStrings><addname="ConString"connectionString="DataSource=MY 查看详情

WPF 数据网格绑定工具提示在表格内容绑定刷新时闪烁

...格,其中绑定了一个可观察的集合,表示它的数据。集合中的数据将应用于单元格的内容和行的工具提示,您可以在以下xaml代码中看到:<DataGri 查看详情

将 ObservableCollection 绑定到 wpf 数据网格:网格保持为空

】将ObservableCollection绑定到wpf数据网格:网格保持为空【英文标题】:BindanObservableCollectiontoawpfdatagrid:Gridstaysempty【发布时间】:2013-02-1118:52:56【问题描述】:我想将ObservableCollection绑定到wpf数据网格。我的ObservableCollection不为空... 查看详情

WPF 将列表绑定到 DataGrid 中的 ComboBoxColumn

】WPF将列表绑定到DataGrid中的ComboBoxColumn【英文标题】:WPFBindingalisttoaComboBoxColumnwithinaDataGrid【发布时间】:2021-03-1808:34:39【问题描述】:我遇到了WPF中数据网格中的组合框的问题。基本上我有一个“船员”类和“用户”类,在船... 查看详情

从 WPF 数据网格中的数据集更新数据库

】从WPF数据网格中的数据集更新数据库【英文标题】:UpdatingdatabasefromdatasetinWPFdatagrid【发布时间】:2016-12-0918:51:08【问题描述】:我已经阅读了所有类似的主题,并且我认为我复制了示例,但代码仍然无法正常工作绑定网格:sq... 查看详情

将数据表绑定到 WPF 数据网格

】将数据表绑定到WPF数据网格【英文标题】:IssuebindingdatatabletoWPFdatagrid【发布时间】:2017-05-1421:12:25【问题描述】:我的XAML如下:<DataGridx:Name="WaterfallDataGrid"HorizontalAlignment="Left"Height="540"Margin="10,410,0,0"VerticalAlignment="Top"Width 查看详情

带有自定义列的 WPF 数据网格绑定

】带有自定义列的WPF数据网格绑定【英文标题】:WPFdatagridbindingwithcustomcolumns【发布时间】:2013-08-1116:55:03【问题描述】:目前我正在开发WPF应用程序(使用MVVM),其中我在DataGridView中显示数据。<DataGridRowHeaderWidth="0"ItemsSource=... 查看详情

WPF 数据网格标题文本绑定

】WPF数据网格标题文本绑定【英文标题】:WPFdatagridheadertextbinding【发布时间】:2010-12-1202:50:33【问题描述】:由于某种原因,DataGrid的列标题不是FrameWork元素,因此您不能使用绑定来设置标题文本等内容。如果.NET4.0改变了这种... 查看详情

Datagrid WPF中的SelectedItem绑定

】DatagridWPF中的SelectedItem绑定【英文标题】:SelectedItemBindinginDatagridWPF【发布时间】:2012-06-1218:31:00【问题描述】:我有一个显示列的数据网格,通过代码设置ItemsSource-Property添加。我还有两列,它们是由XAML添加的(一个按钮以... 查看详情

将内部datagrid数据与外部datagrid wpf绑定

...ource的数据表和一个内部数据网格(可以通过单击rowdetails中的按钮来查看),它绑定了一个名为inner的不同数据表。这两个属性都是从数据库中的2个不同表中填充的, 查看详情

WPF数据网格粘贴

...一行填充了数据。数据似乎不断被覆盖,因此剪贴板数据中的最后一项填充在第一行中,而所有其他行都是空白的。我知道这一定是索引问题或其他问题,但我无法追踪。此外,当我查看网格的可绑定 查看详情

DataGrid中的WPF绑定到DataContext

】DataGrid中的WPF绑定到DataContext【英文标题】:WPFBindinginDataGridtoDataContext【发布时间】:2013-11-1620:52:21【问题描述】:我在将数据网格组合框ItemsSource映射到主数据上下文时遇到了一些问题。这是一些演示代码来显示问题。我的物... 查看详情

WPF 数据网格性能

...的会真正影响性能,例如绑定方法,或者每个单元格模板中的xaml是什么?需要注意的 查看详情

WPF XAML - 将数据网格列绑定到外键(数据集)

】WPFXAML-将数据网格列绑定到外键(数据集)【英文标题】:WPFXAML-Binddatagridcolumntoforeignkey(Dataset)【发布时间】:2013-10-0920:57:58【问题描述】:我正在开发一个与Access2000数据库对话的简单WPF应用程序。我过去使用过实体框架,但... 查看详情

DataGrid 数据绑定/更新中的 WPF 组合框不起作用

】DataGrid数据绑定/更新中的WPF组合框不起作用【英文标题】:WPFComboBoxinDataGriddatabinding/updatenotworking【发布时间】:2011-08-0520:16:04【问题描述】:如果我在VisualStudio2010中设置新的WPF应用程序并添加以下代码+XAML,则会打开一个包... 查看详情

可以在 WPF 数据网格中禁用 F2 键吗?

...在WPFDataGrid中,F2键用于编辑当前单元格。我的软件项目中的要求说F2应该做其他事情。我添加了一个键绑定,但它仅在键盘焦点不在DataGrid中时才有效。我可以禁用或删除DataGrid对F2键的键绑定吗?【问题讨论】:【参考方案1】... 查看详情

在 WPF 中,如何将数据网格列绑定到数据表的特定列?

】在WPF中,如何将数据网格列绑定到数据表的特定列?【英文标题】:InWPF,howcanIbindadatagridcolumntoaspecificcolumnofadatatable?【发布时间】:2011-04-0711:27:28【问题描述】:我有一个包含许多列的数据表,以及一个只需要显示其中几个列... 查看详情

如何在自定义 wpf 控件上绑定数据网格列的可见性?

】如何在自定义wpf控件上绑定数据网格列的可见性?【英文标题】:HowcanIbindvisibilityofadatagridcolumnonacustomwpfcontrol?【发布时间】:2015-08-2308:05:55【问题描述】:我花了一上午的时间查看相关帖子,但我发现没有一篇能解决我遇到... 查看详情