如何为ComboBox中的TextBox注册TextChanged事件

时间:2014-04-28 07:51:55

标签: c# wpf

我们知道comboBox是TextBox,Button和其他UIElements的组合。 我的问题是如何为ComboBox内的TextBox注册TextChanged事件。 ComboBox只包含PreviewTextInput和TextInput事件,但我想处理TextChangedEvent。 编辑:1我的comboBox是一个可编辑的组合框

编辑:2当用户在ComboBox中输入文本时,我想检查它是否是双精度值。我的comboBox中只允许使用double值。

先谢谢。

2 个答案:

答案 0 :(得分:1)

如果扩展ComboBox类,则可以覆盖OnPropertyChanged方法。每次更改ComboBox的任何属性时,都会调用此方法,包括 Text属性。试试这个:

public partial class MyComboBox : ComboBox
{
    public MyComboBox()
    {
        InitializeComponent();
    }

    protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
    {
        base.OnPropertyChanged(e);
        if (e.Property.Name.Contains("Text")) 
        {
            // The Text property value has changed
        }
    }
}

答案 1 :(得分:0)

您可以为ComboBox项使用自定义模板,如下所示:

<ComboBox>
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <!--Your items with whatever-->
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

但是,SelectionChanged事件应该告诉您选择何时更改,因此文本已更改。