如何为组合框中的TextBox注册TextChanged事件

本文关键字:TextBox 注册 TextChanged 事件 组合 | 更新日期: 2023-09-27 18:00:32

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

编辑:2当用户在组合框中输入文本时,我想检查它是否为双值。我的comboBox中只允许使用双值。

提前感谢。

如何为组合框中的TextBox注册TextChanged事件

如果扩展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
        }
    }
}

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

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

但是,SelectionChanged事件应该告诉您何时更改了选择,从而更改了文本。