gpt4 book ai didi

c# - WPF:组合框的下拉列表突出显示了文本

转载 作者:可可西里 更新时间:2023-11-01 08:22:19 28 4
gpt4 key购买 nike

当我在组合框中输入内容时,我会自动打开启用下拉列表

searchComboBox.IsDropDownOpen = true;

这里的问题是 - 文本被突出显示,下一个按键会覆盖之前的文本。

如何在 ComboBox DropDown 打开时禁用文本突出显示?

最佳答案

我遇到了同样的问题,就像一些刚接触 WPF 的用户一样,努力让 Einar Guðsteinsson 提供的解决方案发挥作用。因此,为了支持他的回答,我在这里粘贴了使它起作用的步骤。 (或者更准确地说,我是如何让它发挥作用的)。

首先创建一个继承自组合框类的自定义组合框类。请参阅下面的代码以了解完整的实现。您可以更改 OnDropSelectionChanged 中的代码以满足您的个人要求。

命名空间 MyCustomComboBoxApp{使用 System.Windows.Controls;

public class MyCustomComboBox : ComboBox
{
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;

if (base.IsDropDownOpen && txt.SelectionLength > 0)
{
caretPosition = txt.SelectionLength; // caretPosition must be set to TextBox's SelectionLength
txt.CaretIndex = caretPosition;
}
if (txt.SelectionLength == 0 && txt.CaretIndex != 0)
{
caretPosition = txt.CaretIndex;
}
}

}

确保此自定义组合类存在于同一项目中。然后您可以使用下面的代码在您的 UI 中引用此组合。

<Window x:Class="MyCustomComboBoxApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cc="clr-namespace:MyCustomComboBoxApp"
Title="MainWindow" Height="350" Width="525" FocusManager.FocusedElement="{Binding ElementName=cb}">
<Grid>
<StackPanel Orientation="Vertical">
<cc:MyCustomComboBox x:Name="cb" IsEditable="True" Height="20" Margin="10" IsTextSearchEnabled="False" KeyUp="cb_KeyUp">
<ComboBoxItem>Toyota</ComboBoxItem>
<ComboBoxItem>Honda</ComboBoxItem>
<ComboBoxItem>Suzuki</ComboBoxItem>
<ComboBoxItem>Vauxhall</ComboBoxItem>
</cc:MyCustomComboBox>
</StackPanel>
</Grid>
</Window>

就是这样!有任何问题,欢迎提问!我会尽力提供帮助。

感谢 Einar Guðsteinsson 的解决方案!

关于c# - WPF:组合框的下拉列表突出显示了文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1441645/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com