【发布时间】:2017-03-06 21:32:03
【问题描述】:
我一直在为看似简单的问题寻找解决方案而发疯。我正在尝试找到一种方法来遍历我的 ListView 并获取值。
我有一个带有绑定的 ListView,它在 xaml(简化)中看起来像这样:
<ListView x:Name="MColumnsListXaml" HorizontalAlignment="Left" Height="Auto" Margin="0,42,0,0" VerticalAlignment="Top" Width="Auto">
<ListView.View>
<GridView>
<GridViewColumn Header="First Name" Width="Auto" DisplayMemberBinding="{Binding MColumnName}" />
<GridViewColumn Header="Last Name" Width="Auto" DisplayMemberBinding="{Binding MColumnName2}" />
</GridView>
</ListView.View>
</ListView>
我声明绑定:
public class MandatoryColumns
{
public string MColumnName { get; set; }
public string MColumnName2 { get; set; }
}
列由调用方法的事件触发器填充:
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;
}
现在我需要获取 ListView 中的信息,而这正是我遇到的问题。我的意图是在 ListView 中提取一列并与另一个列表进行交叉检查。为了获得这些值,我尝试了foreach 循环,如下所示:
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}
}
}
在调试器中,我看到项目返回对象 {tutorialWpfApplication1.MandatoryColumns} 并持有我的 needed information,但我找不到访问它的方法。我尝试通过将item 设置为dynamic 来迭代dynamic,而不是`var 和各种在线解决方案声明ListViewItem,但一切总是导致异常错误。
【问题讨论】:
标签: c# wpf listview data-binding