【发布时间】:2016-02-15 08:42:52
【问题描述】:
由于 WPF Combobox 没有 CaretIndex 属性,如 C# 中的 Textbox 和 SelectionStart 属性,我想知道如何获取我的 WPF Combobox 控件的插入索引?
谢谢大家。
【问题讨论】:
由于 WPF Combobox 没有 CaretIndex 属性,如 C# 中的 Textbox 和 SelectionStart 属性,我想知道如何获取我的 WPF Combobox 控件的插入索引?
谢谢大家。
【问题讨论】:
虽然您可以从其子控件中获取它,但它不是直接可访问的。您需要从组合框的控件模板中获取 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;
【讨论】: