【问题标题】:How to find caret position in WPF combobox?如何在 WPF 组合框中找到插入符号的位置?
【发布时间】:2016-02-15 08:42:52
【问题描述】:

由于 WPF Combobox 没有 CaretIndex 属性,如 C# 中的 Textbox 和 SelectionStart 属性,我想知道如何获取我的 WPF Combobox 控件的插入索引?

谢谢大家。

【问题讨论】:

    标签: c# wpf combobox caret


    【解决方案1】:

    虽然您可以从其子控件中获取它,但它不是直接可访问的。您需要从组合框的控件模板中获取 PART_EditableTextBox 控件。最简单的方法是在 ComboBox 的派生中覆盖 OnApplyTemplate,然后使用该派生订阅更改的选择。然后你可以得到 CaretIndex

    protected void override OnApplyTemplate()
    {
        var myTextBox = GetTemplateChild("PART_EditableTextBox") as TextBox;
        if (myTextBox != null)
        {
          myTextBox .SelectionChanged += OnDropSelectionChanged;
        }
    }
    
    private void OnDropSelectionChanged(object sender, RoutedEventArgs e)
    {
       var textbox = sender as TextBox;
       if (textbox != null)
        {
          //you can write your own logic.
          _carentIndex = textbox.CaretIndex;
        }
    }
    

    确保在您的处置或适当的地方取消对 SelectionChanged 的​​订阅

    myTextBox .SelectionChanged -= OnDropSelectionChanged;
    

    【讨论】:

    • 我没有得到“在 ComboBox 的派生中”的部分。你能给我解释一下吗?此外,我仍然不知道这两种方法是如何link 到我的 Combobox 控件的。谢谢。
    猜你喜欢
    • 2015-06-13
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多