【问题标题】:WPF ComboBox Custom Display Selected ItemsWPF ComboBox 自定义显示选定项目
【发布时间】:2016-03-12 12:01:29
【问题描述】:

我按照在线教程为 wpf 项目添加了一个 多选 ListBox 以包含复选框。我能够在后端相应地操作选定的值,但是当 折叠 到我想要的任何文本时,我找不到在控件上设置显示值的解决方案。

XAML

<ComboBox x:Name="chSel_0">
  <ComboBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal">
        <CheckBox x:Name="key_0" IsChecked="{Binding IsIncluded}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>
        <TextBlock Text="{Binding Channel}"/>
      </StackPanel>
    </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>

例如,如果我从可用项目中选择复选框 1、4、6,我希望 ComboBox 在折叠时显示类似 1、4、6 的内容。现在,虽然我很乐意在折叠的控制器上放置任何文本,而 ComboBox 标记上没有“IsEditable=true”。

更新

我一直在编辑模板,几乎可以“正常工作”

XAML

<ContentPresenter DataContext="Binding" Content="{Binding KeysCfgChannels[0]}"/>

C#

public MainWindow()
{
    DataContext = this;
    InitializeComponent();
    CfgChannels();
}

public ObservableCollection<string> KeysCfgChannels { get; private set; }

public void CfgChannels()
{

    string val = "";
    this.KeysCfgChannels = new ObservableCollection<string> { };

    for (int i = 0; i < 16; i++)
      {
        foreach (ChSelVal ch in chCfgs[i])
        {
          if (ch.IsIncluded)
          {
            val += ch.Channel;
          }
        }
        KeysCfgChannels.Add(val);
        //val = "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16";               
    }
}

问题是它只会显示新字符串 if 它是隐式声明的,因为如果我执行KeysCfgChannels.Add("0 1 2 3"),它将显示它,但如果我如图所示,它将不起作用。 p>

【问题讨论】:

    标签: c# wpf xaml combobox multi-select


    【解决方案1】:

    查看下一个链接here(#1,012 – 对组合框的正面使用不同的数据模板),它应该对您有所帮助。

    更新 在这里寻找组合多选: WPF: ComboBox with CheckBoxes as items (it will even update on the fly!).

    如果您遇到代码问题,我仍然很乐意提供帮助。 问候。

    【讨论】:

    • 此代码假定仅选择了 1 个值,但我有一个多选下拉菜单
    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多