【问题标题】:how to convert the listview of winform to listview of wpf如何将winform的listview转换为wpf的listview
【发布时间】:2015-07-26 03:27:11
【问题描述】:

我是 wpf 的新手。我的 winform 应用程序中有此代码,我想在 wpf ListView 中有此代码。但我不知道如何开始..有人可以帮助将其转换为 wpf ListView 这是我的代码窗体

下面的代码显示了数据库中列出的项目的值..

for (int i = 0; i <= ListView1.Items.Count - 1; i++)
{
      con = new SqlConnection(cs);
      string cd = "insert Into ProductSold(InvoiceNo,ProductID,Quantity,Price,TotalAmount) 
                        VALUES (@InvoiceNo,@ProductID,@Quantity,@Price,@Totalamount)";
      cmd = new SqlCommand(cd);
      cmd.Connection = con;
      cmd.Parameters.AddWithValue("InvoiceNo", txtInvoiceNo.Text);
      cmd.Parameters.AddWithValue("ProductID", ListView1.Items[i].SubItems[1].Text);
      cmd.Parameters.AddWithValue("Quantity", ListView1.Items[i].SubItems[4].Text);
      cmd.Parameters.AddWithValue("Price", ListView1.Items[i].SubItems[3].Text);
      cmd.Parameters.AddWithValue("TotalAmount", ListView1.Items[i].SubItems[5].Text);
      con.Open();
      cmd.ExecuteNonQuery();
      con.Close();
}
for (int i = 0; i <= ListView1.Items.Count - 1; i++)
{
      con = new SqlConnection(cs);
      con.Open();
      string cb1 = "update Product set QtyAvailable = QtyAvailable- " + ListView1.Items[i].SubItems[4].Text + " where ProductID= '" + ListView1.Items[i].SubItems[1].Text + "'";
      cmd = new SqlCommand(cb1);
      cmd.Connection = con;
      cmd.ExecuteNonQuery();
      con.Close();
}

【问题讨论】:

  • 将 Winforms 代码逐行转换为 WPF 根本不切实际。在 WPF 中,您的 ListView 对象将显示来自某个模型对象的数据,并且您将迭代模型对象,而不是 ListView 本身(实际上,即使在 Winforms 中,使用 ListView 作为数据的实际容器......但在 Winforms 中比在 WPF 中更常见)。在任何情况下,Stack Overflow 都不是一个“为我编写代码”的网站。你需要自己做出一些努力。如果您在努力后遇到了特定问题,请发布有关 that 的问题。
  • 谢谢彼得爵士,您有什么参考资料可以让我轻松学习 wpf + MVVM。有很多教程,但有些更复杂。我想要一个更容易的。
  • 不幸的是,WPF 本身就很复杂。基本概念并不难学,但要充分利用 WPF 则需要您付出努力。我发现一个有用的网站是wpf.2000things.com。我并不是说它是最好的,但它看起来确实相当全面,并且信息以“一口大小”的块形式呈现。最近我自己经历了 WPF 学习曲线,我很同情你的担忧,但我从来没有找到“灵丹妙药”。我只是挣扎着,就像任何人都必须做的那样。
  • 非常感谢,彼得。这对于像我这样的 wpf 初学者来说是一个很大的帮助。
  • 祝你好运。对于它的价值,现在我知道我在做什么,我发现 WPF 非常适合我的目的。我仍然偶尔会遇到一些烦恼,但总的来说,我更喜欢 WPF 而不是 Winforms。更难学习的原因之一是它具有更多功能,并且它们并不总是以直观的方式工作或相互交互。但这些功能本身通常很有用,并导致用户代码更少/更简单。

标签: c# wpf winforms listview


【解决方案1】:

您可以从this link 开始。在WPF 中,您需要设置ItemsSourceListView 属性,您可以为项目创建一个类。它可以包括您的要求 (ProductID, Quantity, Price, TotalAmount,...) 作为一些 Properies。然后没有 SubItemWPF 不像WinForm。您应该创建该类(例如MyInvoiceClass)并创建其对象列表以将其用作ListView Items。

你可以看看这个样本:

List<MyItemClass> items = new List<MyInvoiceClass>();
items.Add(new MyInvoiceClass() { InvoiceNo = "10", ProductID = 42, .... });
items.Add(new MyInvoiceClass() { InvoiceNo = "11", ProductID = 39, .... });
items.Add(new MyInvoiceClass() { InvoiceNo = "12", ProductID = 7, .... });

//Assign list of objects (Invoice List) to ItemsSource property
ListView1.ItemsSource = items;

然后你可以像下面的代码一样使用它并基于你问题中的循环

foreach (MyInvoiceClass invoice in ListView1.ItemsSource)
{
    // NOW use the "invoice" object to access its properties
}

请考虑@PeterDuniho 点,在您的问题的第一条评论中,祝你好运..

【讨论】:

  • 是的.. 我考虑了彼得爵士的观点,感谢拉姆爵士的样本。它有助于了解我将如何在 wpf 中编写此列表。再次感谢拉姆爵士。
猜你喜欢
  • 1970-01-01
  • 2013-03-17
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 2021-06-17
  • 1970-01-01
相关资源
最近更新 更多