【问题标题】:Adding string array to combo box将字符串数组添加到组合框
【发布时间】:2012-02-03 04:48:52
【问题描述】:

我有一个组合框,我想加载一个从方法返回的字符串数组。我目前只是用 for 循环加载它,但我认为应该将字符串数组直接分配给组合框。 (我只是想改进我的代码)

我进行了一些搜索,并使用数据范围或数据源看到了答案,但这些似乎都不起作用。我也尝试过 datacontext ,因为这似乎是一种可能性。是否有我遗漏的东西,或者没有办法将数组全部放在一行中?

我使用的是 C# WPF,文件是 MainWindow.xaml.cs

谢谢!

【问题讨论】:

    标签: c# wpf arrays


    【解决方案1】:

    试试这个:

    cbxList.ItemsSource = new string[] { "hello", "from", "mars" };
    

    【讨论】:

      【解决方案2】:

      ItemsSource 是您要分配的对象。

      (DataSource 在 Windows 窗体中使用,您通常不会在 WPF 中遇到它。如果您想了解DataContexts,您需要阅读data binding,这非常有用.)

      【讨论】:

      • @H.B.-有没有办法实现这一点而无需更改 xaml 代码,只需在 c# (xaml.cs) 中执行?
      • 您可以从那里设置 ItemsSource。但就像 H.B.说过,如果你会做很多 WPF,你应该真正研究 MVVM 和数据绑定。使用 MVVM,您将拥有一个视图模型,它是您想要显示的内容的一种无 UI 表示。所以在你的情况下,你想显示一个带有一些文本项的组合框;在您的视图模型中,它将由一组字符串表示。当您在该集合中添加或删除字符串时,它们将通过绑定出现在您的 UI 中。
      • @Johnston:如果您命名为 ComboBox,例如cb 您可以使用 cb.ItemsSource = ... 分配给它
      • @H.B:就是这样,谢谢!我试图用 cb.ItemsSource.equals(stringarray) 做 cb.ItemsSource(stringArray) 和其他变体谢谢你的帮助!!
      【解决方案3】:

      填充组合框的功能:

      public void FillComboBox(string[] array, ComboBox box)
      {
       foreach(string x in array)
        {
         box.Items.Add(x);
        }
      }
      

      使用方法:(示例)

      private void Button1_Click(object sender, EventArgs e)
      {
       string[] fruits = {"banana","apple","orange"};
       FillComboBox(fruits,comboBox1);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多