如何为数据绑定的WPF组合框添加分隔符?

flseospp  于 2023-06-07  发布在  其他
关注(0)|答案(6)|浏览(164)

有没有什么方法可以添加一个分隔符到一个WPF组合框是数据绑定?即在我的xaml中,组合框的ItemsSource="{Binding TheList}"。列表是一个可观察的对象集合,其中一个我希望与其他对象分开。这个列表也是从sql生成的,所以它不是硬编码的。我也不希望seaprator是可选的。谢谢!

d6kp6zgx

d6kp6zgx1#

检查this溶液。它使用Style来更改某些ComboBoxItem对象的Template

vsdwdz23

vsdwdz232#

我在.cs文件中动态地构建了我的组合框,没有使用绑定,但我相信它可以帮助您。分隔符无法单击和选择。

ComboBox frameColor = new ComboBox()
{
    Width = 200,
    Margin = new Thickness(180, -780, 0, 0),
    VerticalAlignment = VerticalAlignment.Center,
    IsEditable = false,
    Items =
    {
        new ComboBoxItem(){...},
        new Separator(),
        new ComboBoxItem(){...},
        new ComboBoxItem(){...},
        new ComboBoxItem(){...},
        new Separator(),
        new ComboBoxItem(){...},
        new ComboBoxItem(){...},
        new ComboBoxItem(){...},
        new ComboBoxItem(){...},
        new ComboBoxItem(){...},
    }

结果如下:

xghobddn

xghobddn3#

虽然我的ComboxBoxat the moment)不是DataBound,但我通过向元素添加底部边框实现了分隔符的概念。在本例中,分隔符前后各两行。

<ComboBox x:Name="Cbx" SelectionChanged="Cbx_SelectionChanged">
  <ComboBoxItem Content="select one..." Foreground="DarkGray" IsSelected="True" /
  <ComboBoxItem Content="ABC" />
  <ComboBoxItem Content="DEF" />
  <ComboBoxItem Content="GHI" BorderBrush="Black" BorderThickness="0,0,0,2" />
  <ComboBoxItem Content="KLM" />
  <ComboBoxItem Content="NOP" />
</ComboBox>
xoshrz7s

xoshrz7s5#

如果你想在C#代码中做同样的事情:

Cbx.Items.Add("ABC");
Cbx.Items.Add("DEF");
ComboBoxItem item = new ComboBoxItem();
item.Content = "GHI";
item.BorderBrush = Brushes.Black;
item.BorderThickness = new Thickness(0, 0, 0, 2);
Cbx.Items.Add(item);
Cbx.Items.Add("KLM");
Cbx.Items.Add("NOP");
3j86kqsm

3j86kqsm6#

XAML唯一的解决方案,为每一个项目。如果总是相同的项目列表,您可能会添加基于ItemsControl``AlternationCount的触发器。
这就是结果。enter image description here

<ComboBox.ItemContainerStyle>
  <Style TargetType="ComboBoxItem">
    <Setter Property="BorderBrush" Value="DarkGray" />
    <Setter Property="BorderThickness" Value="0,1,0,0" />
  </Style>
</ComboBox.ItemContainerStyle>

相关问题