C#WPF遍历ListView项

C#WPF遍历ListView项,c#,wpf,listview,data-binding,C#,Wpf,Listview,Data Binding,我一直在疯狂地试图找到一个看似简单问题的解决方案。我正试图找到一种方法来迭代我的ListView并获取值 我有一个带有绑定的ListView,在xaml中看起来像这样(简化): 列由调用方法的事件触发器填充: private void btnValidateColumns_Click(object sender, RoutedEventArgs e) { MandatoryOptionalColumnsList(); } public void MandatoryOptionalColu

我一直在疯狂地试图找到一个看似简单问题的解决方案。我正试图找到一种方法来迭代我的ListView并获取值

我有一个带有绑定的ListView,在xaml中看起来像这样(简化):

列由调用方法的事件触发器填充:

private void btnValidateColumns_Click(object sender, RoutedEventArgs e)
{
    MandatoryOptionalColumnsList();
}
public void MandatoryOptionalColumnsList()
{
    List<MandatoryColumns> MColumnsList = new List<MandatoryColumns>();
    MColumnsList.Add(new MandatoryColumns() { MColumnName = "John", MColumnName2 = "Smith" });
    MColumnsList.Add(new MandatoryColumns() { MColumnName = "Jason", MColumnName2 = "Bell" });
    MColumnsListXaml.ItemsSource = MColumnsList;
}
在调试器中,我看到item返回object
{tutorialWpfApplication1.MandatoryColumns}
并保存我的,但我找不到访问它的方法。我试图通过使
动态
来迭代
,声明
列表视图项
,而不是'var和各种在线解决方案,但所有操作都会导致异常错误。

尝试以下操作:

foreach (var item in MColumnsListXaml.Items.OfType<MandatoryColumns>())
{
    MessageBox.Show(item.MColumnName);
    MessageBox.Show(item.MColumnName2);
}
foreach(MColumnsListXaml.Items.OfType()中的变量项)
{
MessageBox.Show(item.MColumnName);
MessageBox.Show(item.mcolumname2);
}

设置
itemsource
的值后,也可以获得该值。因此,您可以按如下方式强制转换和使用列表

List<MandatoryColumns> items = (List<MandatoryColumns>)MColumnsListXaml.ItemsSource;
foreach (MandatoryColumns item in items)
{
    //Do some work with the MandatoryColumns item
}
List items=(List)MColumnsListXaml.ItemsSource;
foreach(项目中的MandatoryColumns项目)
{
//对MandatoryColumns项执行一些操作
}

如果您将
强制转换为类型
命令列
您应该能够访问这些值。只要你知道列表中的每一项都是这种类型的,那么你在施法时就不会出现异常。

谢谢你的快速回答,但结果完全一样。该项返回
{tutorialWpfApplication1.MandatoryColumns}
,就像我在文章的屏幕截图中看到的一样。我可以在调试器中的
对象中看到此信息,但不知道如何访问它。我回答得太早了。我现在可以访问这个值了。我真不敢相信它这么简单!如果他回答了你的问题,别忘了给他投“正确答案”一票。
public void test()
{
    foreach (var item in MColumnsListXaml.Items)
    {
        MessageBox.Show(MColumnsListXaml.ToString()); //MColumnsListXaml = {System.Windows.Controls.ListView Items.Count:2}
        MessageBox.Show(MColumnsListXaml.Items.ToString()); //MColumnsListXaml.Items = {System.Windows.Controls.ItemCollection}
        MessageBox.Show(item.ToString()); //item = {tutorialWpfApplication1.MandatoryColumns}
    }
}
foreach (var item in MColumnsListXaml.Items.OfType<MandatoryColumns>())
{
    MessageBox.Show(item.MColumnName);
    MessageBox.Show(item.MColumnName2);
}
List<MandatoryColumns> items = (List<MandatoryColumns>)MColumnsListXaml.ItemsSource;
foreach (MandatoryColumns item in items)
{
    //Do some work with the MandatoryColumns item
}