gpt4 book ai didi

c# - 在使用自定义列表使用 ItemSource 之前,项目集合必须为空

转载 作者:行者123 更新时间:2023-11-30 15:23:34 24 4
gpt4 key购买 nike

在我的类(class) ResultEntity 中,如果我这样做:

_resultMulti = new List<ResultTaskFund>(); 

我看到以下错误消息:

"Exception: Items collection must be empty before using ItemSource."

我看到很多人也收到了这条错误消息,我已经阅读了这些帖子,但我不明白为什么会看到这条消息。如果我只是声明 _resultMulti 而没有初始化应用程序加载的新列表。我不明白为什么?

我有以下类(class):

结果摘要

 public class ResultEntity : INotifyPropertyChanged
{

public List<ResultTaskFund> ResultsMulti
{
get { return _resultsMulti; }
set { _resultsMulti = value; OnPropertyChanged("ResultsMulti"); }
}

List<ResultTaskFund> _resultMulti;


public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

ResultTaskFund

 public class ResultTaskFund : INotifyPropertyChanged
{
public string TaskName { get; set; }
public ResultFund ABBC { get; set; }
public ResultFund BBCA { get; set; }
public ResultFund CCCA { get; set; }
}

成果基金

    public class ResultFund
{
public string FundCode { get; set; }
public ErrorAndWarningCodes ErrCode { get; set; }
public bool FundRequried { get; set; }
public bool CheckRequired { get; set; }
public string DisplayString { get; set; }
}

XAML

 <DataGrid Grid.Row="0"
DataContext="{Binding ResultSummary}"
x:Name="dataGridResultMulti"
ItemsSource="{Binding ResultsMulti, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource DataGridTemplate}"
ColumnHeaderStyle="{StaticResource DG_ColumnHeader}"
RowStyle="{StaticResource DG_Row}"
CellStyle="{StaticResource DG_Cell}"
RowDetailsTemplate="{StaticResource DG_RowDetail}"
RowHeaderStyle="{StaticResource DG_RowHeader}"
AutoGenerateColumns="False"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Silver"
RowHeaderWidth="30"
Margin="25,5,20,15">
<DataGrid.Columns>
<DataGridTextColumn Header="Task" IsReadOnly="True" Binding="{Binding TaskName}"/>
<DataGridTextColumn Header="ABBC" IsReadOnly="True" Binding="{Binding ABBC.DisplayString}"/>
<DataGridTextColumn Header="BBCA" IsReadOnly="True" Binding="{Binding BBCA.DisplayString}"/>
<DataGridTextColumn Header="CCCA" IsReadOnly="True" Binding="{Binding CCCA.DisplayString}"/>
<DataGrid.Columns>
</DataGrid>

最佳答案

您将 DataGridTextColumns 直接添加为 DataGrid 的项目,因此您同时设置了 ItemsItemsSource 属性,同时只能使用一个。使用 Columns 附加属性修复您的列配置:

<DataGrid.Columns>
<DataGridTextColumn Header="Task" IsReadOnly="True" Binding="{Binding TaskName}"/>
<DataGridTextColumn Header="ABBC" IsReadOnly="True" Binding="{Binding ABBC.DisplayString}"/>
<DataGridTextColumn Header="BBCA" IsReadOnly="True" Binding="{Binding BBCA.DisplayString}"/>
<DataGridTextColumn Header="CCCA" IsReadOnly="True" Binding="{Binding CCCA.DisplayString}"/>
</DataGrid.Columns>

关于c# - 在使用自定义列表使用 ItemSource 之前,项目集合必须为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34329801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com