所选项目的文本内容
如果您使用的是在 xaml 中定义了 ComboBoxItems 的简单 ComboBox,那么您可能只需要这个:
MessageBox.Show((combobox1.SelectedItem as ComboBoxItem).Content.ToString());
SelectedItem 属性使您可以访问选定的 对象 的实例,具体取决于所使用的呈现模板以及如何或是否已绑定这些项目上面的组合可能不起作用。
如果您不能保证该项目是您期望的 type,我鼓励您在这种情况下使用模式匹配而不是直接强制转换。当您需要处理null(无选择)之类的情况或当 SelectedItem 是数据绑定记录(因此不是ComboBoxItem)
时,生成的代码变得更具可扩展性
if (combobox1.SelectedItem is ComboBoxItem cbItem)
MessageBox.Show($"{cbItem.Content}");
// example of an alternate expected type pattern:
//else if (combobox1.SelectedItem is MyWidget widget)
// MessageBox.Show(widget.Description);
else
MessageBox.Show($"{combobox1.SelectedItem}");
可编辑组合框中的选定文本:
如果你特别想访问在 ComboBox 中被部分选中的文本,那么根据这个建议How to get ComboBox.SelectedText in WPF
您应该能够通过访问组合框的控件模板中使用的内部 TextBox 来访问选定的文本:
var textBox = (TextBox)combobox1.Template.FindName("PART_EditableTextBox", combobox1);
MessageBox.Show(textBox.SelectedText);
背景 - 文本框选定的文本:
阅读此 WPF 教程:The TextBox Control
txtStatus.Text = "Selection starts at character #" + textBox.SelectionStart + Environment.NewLine;
txtStatus.Text += "Selection is " + textBox.SelectionLength + " character(s) long" + Environment.NewLine;
txtStatus.Text += "Selected text: '" + textBox.SelectedText + "'";
SelectionStart 为我们提供当前光标位置或是否有选择:从哪里开始。
SelectionLength 为我们提供当前选择的长度(如果有)。否则它只会返回 0。
如果有选择,SelectedText 会为我们提供当前选择的字符串。否则返回一个空字符串。