【发布时间】: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