【问题标题】:Datagrid error The element list has to be empty before being used with items source数据网格错误元素列表在与项目源一起使用之前必须为空
【发布时间】:2017-04-25 04:56:39
【问题描述】:

我有一个组合框,它的选择决定了数据网格的内容

<DataGrid  Height="100" Margin="10"/>

通过

    private void ComboBox_DropDownClosed(object sender, EventArgs e)
    {
        string strComboBoxName = (sender as ComboBox).Name;
        string strComboBoxSelectedItem = (sender as ComboBox).Text;
        int iComboBoxSelectedItem = (sender as ComboBox).SelectedIndex;
        Serializers.Logger.WriteLog("ComboBox Dropdown closed " + strComboBoxName + " selected " + strComboBoxSelectedItem);
        string strError = string.Empty;
        string strNewText = (sender as ComboBox).Text;
        dtgFeatures.ItemsSource = null;

        switch (iComboBoxSelectedItem)
        {
            case 0: dtgFeatures.ItemsSource = obcCfgUsers; break;
            case 1: dtgFeatures.ItemsSource = obcCfgPartPrograms; break;
            default: MessageBox.Show("ComboBox_DropDownClosed: item " + iComboBoxSelectedItem + " not acknowledged"); break;
        }
    }
}

[Serializable]
public class CfgUsers
{  
    public string ID { get; set;}
    public string Username{ get; set;}
    public string Password{ get; set;}
    public bool IsAdministrator{ get; set;}
    //public Image Photo{ get; set;}
}

[Serializable]
public class CfgPartPrograms
{
    public string Group{ get; set;}
    public string Description{ get; set;}
    public string Filename{ get; set;}
    public string Notes{ get; set;}
    //public Image Picture{ get; set;}
}

所以简而言之,它会更改数据网格的项目源。

问题是我收到以下错误[已翻译]:

元素列表在与项目源一起使用之前必须为空。

这是我不明白的:我希望能够更改源但将元素保留在两个列表中。并使用数据网格添加/编辑元素。 所以列表不能为空。

谢谢

【问题讨论】:

  • 你能显示 DataGrid 的完整 XAML 吗?
  • 这是数据网格的整个 xaml 代码。你想要整个xaml吗?与数据网格无关
  • 这不可能是你在哪里定义名称的所有 DataGrid XAML? dtgFeatures
  • 另外,我们可以看看CfgUsersCfgPartPrograms 的初始化。那里可能有一些事情可能会搞砸你。
  • @Tuco 还有到

标签: c# wpf datagrid observablecollection itemssource


【解决方案1】:

确保您没有在 XAML 标记的 ... 元素中直接放置任何内容。然后,如果您尝试以编程方式设置其 ItemsSource 属性,您将收到与此类似的错误消息。

如果您明确定义列,请不要忘记 节点:

<DataGrid>
  <DataGrid.Columns>
  ...
 </DataGrid.Columns>
</DataGrid>

如果您需要任何进一步的帮助,请发布您的 DataGrid 的整个标记。

【讨论】:

    【解决方案2】:

    很抱歉,我为组合框和数据网格交换了名称。这就是组合框在组合框事件中被阻止的原因

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-23
      • 2016-01-04
      • 2012-03-04
      • 2013-08-08
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      相关资源
      最近更新 更多