【问题标题】:How to add a separator to a WPF combobox that is databound?如何向数据绑定的 WPF 组合框添加分隔符?
【发布时间】:2013-08-11 19:51:00
【问题描述】:

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

【问题讨论】:

  • 到目前为止,您为实现这一目标做了哪些尝试?

标签: c# wpf binding combobox separator


【解决方案1】:

检查this 解决方案。它使用Style 更改某些ComboBoxItem 对象的Template

【讨论】:

    【解决方案2】:

    您需要使用 ComboBox.ItemTemplate 来绘制您的元素

    http://www.silverlightshow.net/items/Silverlight-ComboBox.aspx

    【讨论】:

    • 这并没有说明分隔符
    • 链接失效了,能否更新一下?
    【解决方案3】:

    虽然我的ComboxBox目前)不是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>
    

    【讨论】:

      【解决方案4】:

      如果你想在 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");
      

      【讨论】:

        【解决方案5】:

        我在 .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(){...},
            }
        

        这是结果:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-12
          • 2014-02-03
          • 2011-08-25
          相关资源
          最近更新 更多