Trm*_*Trm 0 c# data-binding wpf listview
我一直在发疯,试图找到一个看似简单的问题的解决方案。我试图找到一种方法来遍历我的 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>
Run Code Online (Sandbox Code Playgroud)
我声明绑定:
public class MandatoryColumns
{
public string MColumnName { get; set; }
public string MColumnName2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
列由调用方法的事件触发器填充:
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;
}
Run Code Online (Sandbox Code Playgroud)
现在我需要获取 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}
}
}
Run Code Online (Sandbox Code Playgroud)
在调试器中,我看到 item 返回 object{tutorialWpfApplication1.MandatoryColumns}并保存我需要的信息,但我找不到访问它的方法。我试图通过 make itemit来迭代dynamic,声明ListViewItem而不是 `var 和各种在线解决方案,但一切总是导致异常错误。
尝试这个:
foreach (var item in MColumnsListXaml.Items.OfType<MandatoryColumns>())
{
MessageBox.Show(item.MColumnName);
MessageBox.Show(item.MColumnName2);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5506 次 |
| 最近记录: |