wpf combobox 去除下拉框展开时自动选择文本

新增一个自定义控件继承ComboBox,同事在输入事件之前打开下拉框

 public partial class ComboBoxEx : ComboBox
 {
     public ComboBoxEx()
     {
     }
     private int caretPosition;

     public override void OnApplyTemplate()
     {
         base.OnApplyTemplate();

         var element = GetTemplateChild("PART_EditableTextBox");
         if (element != null)
         {
             var textBox = (TextBox)element;
             //};
             textBox.SelectionChanged += OnDropSelectionChanged;
         }
     }

     private void OnDropSelectionChanged(object sender, System.Windows.RoutedEventArgs e)
     {
         TextBox txt = (TextBox)sender;

         Trace.WriteLine("Selection changed: " + txt.SelectionLength + ",CaretIndex:" + txt.CaretIndex);

         if (base.IsDropDownOpen && txt.SelectionLength > 0)
         {
             txt.CaretIndex = caretPosition;
         }
         if (txt.SelectionLength == 0 && txt.CaretIndex != 0)
         {
             caretPosition = txt.CaretIndex;
         }

         e.Handled = true;
     }
 }

前台

  <usercontrolsex:ComboBoxEx IsTextSearchEnabled="False" IsEditable="True"  FontSize="15"
         x:Name="txtUser"  PreviewTextInput="txtUser_PreviewTextInput"/>

后台事件

    private void txtUser_PreviewTextInput(object sender, TextCompositionEventArgs e)
    {
        txtUser.IsDropDownOpen = true;
    }
posted @   Hey,Coder!  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示