如何从代码中将分隔符添加到列表框并将其转换为不可选择

How to add a separator to a listBox from code AND cast it to not selectable

这就是我所做的并且有效:

 if (condition...)
 {
   ComboBoxItem cbi2 = new ComboBoxItem();
   cbi2.Content = new TextBox() { Background= Brushes.Red, HorizontalAlignment= HorizontalAlignment.Stretch, Margin=new Thickness(0) , Height = 5, IsHitTestVisible=false, BorderBrush=null};
   ibw.cmbOptions.Items.Add(cbi2);
 }

唯一的问题是尽管文本框不是 IsHitTestVisible,但它是可选的,这是一个问题。所以我也对完全不同的解决方案持开放态度。唯一的限制是根据代码行事。

我可以在这里看到 2 个选项:

首先,简单地使用 Separator 元素:

ibw.cmbOptions.Items.Add(new Separator());

或者,您可以禁用 ComboBoxItem,这将使 ComboBox 无法选择。

ComboBoxItem cbi2 = new ComboBoxItem();
cbi2.IsEnabled = false;
cbi2.Content = new TextBox() { Background= Brushes.Red, HorizontalAlignment= HorizontalAlignment.Stretch, Margin=new Thickness(0) , Height = 5, IsHitTestVisible=false, BorderBrush=null};
ibw.cmbOptions.Items.Add(cbi2);