WPF组合框自定义显示所选项目

本文关键字:选项 项目 显示 自定义 组合 WPF | 更新日期: 2023-09-27 18:25:57

我遵循了一个在线教程,为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,我希望组合框在折叠时显示类似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";               
    }
}

问题是,只有当隐式声明为中时,它才会显示新字符串。如果我执行KeysCfgChannels.Add("0 1 2 3"),它会显示,但如果我如图所示使用它,它就不会工作。

WPF组合框自定义显示所选项目

看看这里的下一个链接(#1012–为组合框的正面使用不同的数据模板),它应该会对您有所帮助。

更新在此处查找组合多选:WPF:以复选框作为项目的组合框(它甚至会动态更新!)。

如果您对代码有问题,我仍然很乐意为您提供帮助。当做