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")
,它会显示,但如果我如图所示使用它,它就不会工作。
看看这里的下一个链接(#1012–为组合框的正面使用不同的数据模板),它应该会对您有所帮助。
更新在此处查找组合多选:WPF:以复选框作为项目的组合框(它甚至会动态更新!)。
如果您对代码有问题,我仍然很乐意为您提供帮助。当做