【发布时间】:2016-08-10 06:14:33
【问题描述】:
我陷入了这个问题。我的应用程序中有一个组合框(用代码创建,而不是 XAML);我已经用复选框填充了它,因为我需要一个带有复选框的下拉控件。
现在,我不需要组合框选择,因为它没有意义。所以我想在控件的文本部分显示一个标签。
有没有办法做到这一点?这是一个最小的例子:
myComboBox = new System.Windows.Controls.ComboBox();
foreach (var key in myDictionary.Keys)
{
System.Windows.Controls.CheckBox chk = new System.Windows.Controls.CheckBox();
chk.Content = key;
chk.SetBinding(System.Windows.Controls.CheckBox.IsCheckedProperty, new Binding() { Mode = BindingMode.TwoWay, Source = this, Path = new PropertyPath("myDictionary[" + key + "]") });
RoutedEventHandler ev = (sender, e) =>
{
// Do something when a checkbox is changed
};
chk.Checked += ev;
chk.Unchecked += ev;
myComboBox.Items.Add(chk);
}
这样,如果用户点击一个复选框,复选框的内容就会显示在文本字段中。
我也修改了添加
myComboBox.SelectionChanged += (sender, jender) =>
{
myComboBox.SelectedItem = null;
};
这种方式永远不会显示任何文本。但是..如果我想在组合框的文本部分内写一个固定的字符串呢?
谢谢
【问题讨论】:
-
您考虑过使用 WPF 工具包吗?他们有一个正是您所描述的控件:wpftoolkit.codeplex.com/wikipage?title=CheckComboBox 否则,您可以使用 ItemTemplate 我相信。
-
@Joe 感谢您的评论。无论如何,我从未考虑过 WPF 工具包;谢谢。但是,该控件将复选框内容连接在一起;我需要一个固定的字符串来代替复选框内容..
-
啊,抱歉,我以为那是你想要的。