【问题标题】:Convert Listview from Winforms to WPF将 Listview 从 Winform 转换为 WPF
【发布时间】:2014-05-14 10:22:09
【问题描述】:

您好,我正在尝试将我的 Winforms 应用程序转换为 WPF 以将其与另一个 WPF 应用程序合并。

我坚持的主要部分是将数据链接到我的 ListView 列,在 Winform 中我有:

        listView1.Items.Clear();
        this.scanner.Scan();
        ControllerInfoCollection controllers = scanner.Controllers;
        ListViewItem item = null;
        foreach (ControllerInfo controllerInfo in controllers)
        {
            item = new ListViewItem(controllerInfo.IPAddress.ToString());
            item.SubItems.Add(controllerInfo.Availability.ToString());
            item.SubItems.Add(controllerInfo.IsVirtual.ToString());
            item.SubItems.Add(controllerInfo.SystemName);
            item.SubItems.Add(controllerInfo.Version.ToString());
            item.SubItems.Add(controllerInfo.ControllerName);
            this.listView1.Items.Add(item);
            item.Tag = controllerInfo;
        }
    }

我似乎无法找到将每个 controllerInfo 片段绑定到其对应列的方法。 这是我的 ListView1 的 xaml 代码:

    <ListView.View>
    <GridView AllowsColumnReorder="True">
    <GridViewColumn DisplayMemberBinding="{Binding Path=IPAdress}" Header="IP" Width="65"/>
    <GridViewColumn DisplayMemberBinding="{Binding Path=Availability}" Header="Availability" Width="60"/>
    <GridViewColumn DisplayMemberBinding="{Binding Path=IsVirtual}" Header="Virtual" Width="40"/>
    <GridViewColumn DisplayMemberBinding="{Binding Path=SystemName}" Header="System name" Width="75"/>
    <GridViewColumn DisplayMemberBinding="{Binding Path=Version}" Header="RobotWare" Width="60"/>
    <GridViewColumn DisplayMemberBinding="{Binding Path=ControllerName}" Header="Controller Name" Width="100"/>
    </GridView>
    </ListView.View>

【问题讨论】:

  • 您是否在列表视图元素中提到了来源?还要确保绑定到 ObsevableCollection

标签: c# wpf winforms listview


【解决方案1】:

只是一个友好的建议,在 wpf 中编写一行代码之前学习MVVM。要在这里解决您的问题,您无需直接在ListView 上触摸Items 属性。只需将ItemsSource 设置如下即可。

    this.scanner.Scan();
    ControllerInfoCollection  controllers = scanner.Controllers;

    listView1.ItemsSource = controllers

【讨论】:

  • 谢谢!我快到项目截止日期了,需要将此 winform 转换为 wpf。我会尝试学习 MVVM,但时间至关重要。
  • 我现在正试图将我选择的项目转换为 listviewitem ListViewItem item = this.listView1.SelectedItems[0] 我找不到要使用的正确显式转换,还是我的天真又在搞我?
  • 为什么需要listviewitem?
  • 我只是想转换它,那行有错误。该项目用于事件处理程序的其余部分,如果 item!=null 则根据其属性发生一些事情
  • 如果您的列表视图不是多选,那么ControllerInfo controller = listView1.SelectedItem as ControllerInfo 将为您提供选定的控制器...对于多选ControllerInfo controller = listView1.SelectedItems[0] as ControllerInfo 将为您提供第一个选定的控制器。不需要 ListViewItem
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 2013-09-28
相关资源
最近更新 更多