Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-选择不同的ComboBoxItems时,如何加载不同的listviewitems?_C#_Wpf_Listview - Fatal编程技术网

C#-选择不同的ComboBoxItems时,如何加载不同的listviewitems?

C#-选择不同的ComboBoxItems时,如何加载不同的listviewitems?,c#,wpf,listview,C#,Wpf,Listview,我希望这样,当我单击第一个comboboxitem时,第一个数组中的字符串将添加到listview中。但是缺少了一些东西,因为没有发生任何事情。(Items.Clear只是为了测试,我还将使用它来清除我在WPF中定义的以前的listviewitems)。提前谢谢 尝试使用SelectionChanged事件;然后遍历数组并将项添加到listview private void cbKlik_GotFocus(object sender, RoutedEventArgs e) { strin

我希望这样,当我单击第一个comboboxitem时,第一个数组中的字符串将添加到listview中。但是缺少了一些东西,因为没有发生任何事情。(Items.Clear只是为了测试,我还将使用它来清除我在WPF中定义的以前的listviewitems)。提前谢谢

尝试使用
SelectionChanged
事件;然后遍历数组并将项添加到listview

private void cbKlik_GotFocus(object sender, RoutedEventArgs e)
{
    string[] izbira1 = { "Kingston 2, 5'' SSD disk 480 GB, SATA3", "DELL monitor LED UltraSharp U2412M", "Lenovo IdeaPad 110" };
    string[] izbira2 = { "PCX namizni računalnik Exam i5-7400/8GB/SSD120+1TB/Win10H", "Lenovo prenosnik V310", "Intel procesor Core i7-5820K" };
    string[] izbira3 = { "HP prenosnik Pavilion 17-ab004nm", "Intel procesor Core i7 6900K", "Gigabyte grafična kartica GTX 1080 OC" };
    string[] izbira4 = { "Asus prenosnik FX502VM-DM311T", "HP prenosnik Omen 17-w103nm", "DELL prenosnik Alienware 17" };

    ComboBox cmb = (ComboBox)sender;
    int izbranIndex = cmb.SelectedIndex;

    if (izbranIndex == 1)
    {
        lvDataBinding.Items.Clear();
    }
    //lvDataBinding.Items.Clear();

}

尝试使用
SelectionChanged
事件;然后遍历数组并将项添加到listview

private void cbKlik_GotFocus(object sender, RoutedEventArgs e)
{
    string[] izbira1 = { "Kingston 2, 5'' SSD disk 480 GB, SATA3", "DELL monitor LED UltraSharp U2412M", "Lenovo IdeaPad 110" };
    string[] izbira2 = { "PCX namizni računalnik Exam i5-7400/8GB/SSD120+1TB/Win10H", "Lenovo prenosnik V310", "Intel procesor Core i7-5820K" };
    string[] izbira3 = { "HP prenosnik Pavilion 17-ab004nm", "Intel procesor Core i7 6900K", "Gigabyte grafična kartica GTX 1080 OC" };
    string[] izbira4 = { "Asus prenosnik FX502VM-DM311T", "HP prenosnik Omen 17-w103nm", "DELL prenosnik Alienware 17" };

    ComboBox cmb = (ComboBox)sender;
    int izbranIndex = cmb.SelectedIndex;

    if (izbranIndex == 1)
    {
        lvDataBinding.Items.Clear();
    }
    //lvDataBinding.Items.Clear();

}

您可以将
ListView
ItemsSource
属性设置为
string[]
。尝试处理组合框的
SelectionChanged
事件,如下所示:

ComboBox cmb = (ComboBox)sender;
cmb.SelectionChanged += cmbx_SelectionChanged;

void cmbx_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    MessageBox.Show(string.Format("Index has been changed {0}", yourcomobobox.SelectedIndex));
 if(yourcomobobox.SelectedIndex==1)
  {
   listview.Items.Clear();
   foreach (string item in izbira1){ 

   listview.Items.Add(new ListViewItem(item));
   }
  }
}

您可以将
ListView
ItemsSource
属性设置为
string[]
。尝试处理组合框的
SelectionChanged
事件,如下所示:

ComboBox cmb = (ComboBox)sender;
cmb.SelectionChanged += cmbx_SelectionChanged;

void cmbx_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    MessageBox.Show(string.Format("Index has been changed {0}", yourcomobobox.SelectedIndex));
 if(yourcomobobox.SelectedIndex==1)
  {
   listview.Items.Clear();
   foreach (string item in izbira1){ 

   listview.Items.Add(new ListViewItem(item));
   }
  }
}

为您更新了代码。希望它能起作用。如果对您有帮助,请将其标记为答案。如果我理解正确,这就是我如何使用您的解决方案。但问题是,当我打开主窗口并单击第一个选项时,什么都没有发生。单击任何其他选项后,项目将添加到listview中,因为我可以单击它们,但不显示名称。第一个选项只有在我没有先点击它时才起作用。为您更新了代码。希望它能起作用。如果对您有帮助,请将其标记为答案。如果我理解正确,这就是我如何使用您的解决方案。但问题是,当我打开主窗口并单击第一个选项时,什么都没有发生。单击任何其他选项后,项目将添加到listview中,因为我可以单击它们,但不显示名称。第一个选择只有在我没有先点击它的时候才起作用。你的解决方案有效,但不幸的是,只有在很小的情况下。我需要在插入新的listviewitems之前清除列表,我使用lvDataBinding.Items.clear()完成这一操作;这会在选择第二个选项后使我的应用程序崩溃(可能是因为我清除了一个已空的列表)。如何修复此问题?您应该通过将ItemsSource属性设置为null来清除ListView:lvDataBinding.ItemsSource=null;它起作用了!谢谢但我还有一个问题。我以前拥有的ListViewItems(我在WPF中创建)有一个显示ListViewitem名称的单击MessageBox。现在我用ComboBox加载新的列表并单击它们,当然它会显示以前的listviewitems的名称。我需要定义一个保持listview项目名称的数据结构。我该怎么做?如果你有其他问题,请问另一个问题。你的解决方案很有效,但不幸的是,只有在很小的情况下。我需要在插入新的listviewitems之前清除列表,我使用lvDataBinding.Items.clear()完成这一操作;这会在选择第二个选项后使我的应用程序崩溃(可能是因为我清除了一个已空的列表)。如何修复此问题?您应该通过将ItemsSource属性设置为null来清除ListView:lvDataBinding.ItemsSource=null;它起作用了!谢谢但我还有一个问题。我以前拥有的ListViewItems(我在WPF中创建)有一个显示ListViewitem名称的单击MessageBox。现在我用ComboBox加载新的列表并单击它们,当然它会显示以前的listviewitems的名称。我需要定义一个保持listview项目名称的数据结构。我该怎么做?如果你有其他问题,请问另一个问题。