Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF组合框自定义显示选定项_C#_Wpf_Xaml_Combobox_Multi Select - Fatal编程技术网

C# WPF组合框自定义显示选定项

C# WPF组合框自定义显示选定项,c#,wpf,xaml,combobox,multi-select,C#,Wpf,Xaml,Combobox,Multi Select,我遵循了一个在线教程,为wpf项目创建了一个包含复选框的多选列表框。我能够在后端相应地操作所选值,但我找不到解决方案,无法在折叠时将控件上显示的值设置为我想要的任何文本 XAML <ComboBox x:Name="chSel_0"> <ComboBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <CheckBo

我遵循了一个在线教程,为wpf项目创建了一个包含复选框的多选列表框。我能够在后端相应地操作所选值,但我找不到解决方案,无法在折叠时将控件上显示的值设置为我想要的任何文本

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>
<ContentPresenter DataContext="Binding" Content="{Binding KeysCfgChannels[0]}"/>
C#

public主窗口()
{
DataContext=this;
初始化组件();
CfgChannels();
}
public observeCollection keys CfgChannel{get;private set;}
公共无效CFGCchannels()
{
字符串val=”“;
this.KeysCfgChannels=新的ObservableCollection{};
对于(int i=0;i<16;i++)
{
foreach(ChSelVal ch in chCfgs[i])
{
如果(包括第三章)
{
val+=通道;
}
}
keycfgcchannels.Add(val);
//val=“0 1 2 3 4 5 6 7 8 9 10 11 12 14 16”;
}
}
问题是,如果新字符串是隐式声明的,那么它将只显示新字符串。如果我按
键CfgChannel添加(“0 1 2 3”)
,它将显示。但是如果我按图所示使用它,它将不起作用。

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

更新 在这里查看combo multiselection:

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

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

更新 在这里查看combo multiselection:

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

此代码假定仅选择了一个值,但我有一个多选下拉列表。此代码假定仅选择了一个值,但我有一个多选下拉列表
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";               
    }
}