获取.NET 4中可编辑组合框的当前文本
本文关键字:文本 组合 编辑 NET 获取 | 更新日期: 2023-09-27 18:23:36
在.NET 3.5中,我有一个实现,它可以获得组合框的当前编辑文本,如下所示:
dependencyObject.GetValue(ComboBox.TextProperty);
一切都很好,值是ComboBox.text-Property上的编辑文本。现在我们升级到.NET 4,返回值是旧文本,而不是编辑文本,这是第一个奇怪的行为。但是,如果ComboBox的上一个值是来自ComboBox.ItemsSource的项,则上面的代码将返回编辑后的值。目前,我不知道微软在.NET 4中对该属性做了什么更改。有人知道现在会有什么不同吗?
尝试使用Text
属性,如下所示:
XAML
<ComboBox Name="MyComboBox" IsEditable="True" IsTextSearchEnabled="True" SelectedIndex="0" Width="150" Height="30">
<ComboBoxItem>3</ComboBoxItem>
<ComboBoxItem>2</ComboBoxItem>
<ComboBoxItem>4</ComboBoxItem>
<ComboBoxItem>6</ComboBoxItem>
</ComboBox>
<Button Width="100" Height="30" Content="GetEditedText" VerticalAlignment="Bottom" Click="Button_Click" />
Code behind
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(MyComboBox.Text.ToString());
}
或通过模板访问TextBox
:
private void Button_Click(object sender, RoutedEventArgs e)
{
TextBox input = ((TextBox)MyComboBox.Template.FindName("PART_EditableTextBox", MyComboBox));
MessageBox.Show(input.Text.ToString());
}