在.NET 4中获取当前可编辑的ComboBox文本

时间:2013-07-17 08:58:47

标签: c# wpf binding combobox

在.NET 3.5中我有一个实现,它获取当前编辑的comboBox文本,如下所示:

dependencyObject.GetValue(ComboBox.TextProperty);

一切正常,价值是ComboBox.Text-Property上的编辑文本。现在我们升级到.NET 4,返回值是旧文本,而不是编辑后的文本,这是第一个奇怪的行为。但是如果ComboBox的先前值是ComboBox.ItemsSource中的项,则上面的代码将返回已编辑的值。目前我不知道微软在.NET 4中对该属性进行了哪些更改。有没有人知道现在可能会有什么不同?

1 个答案:

答案 0 :(得分:1)

尝试使用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()); 
}