gpt4 book ai didi

c# - MVVM/WPF - 当用户在文本框中输入时总是显示组合框下拉列表

转载 作者:太空宇宙 更新时间:2023-11-03 12:35:36 28 4
gpt4 key购买 nike

我想在用户在文本框中输入时强制打开下拉菜单。

我有适当的逻辑来过滤列表,当我没有将任何东西绑定(bind)到 IsDropDownOpen 元素时,它似乎按预期工作,除非文本框失去焦点,然后重新聚焦,除非我单击,否则下拉列表不会返回箭头。

<ComboBox x:Name="nodeList" 
Text="{Binding UserInput, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding NodeTokenList}" DisplayMemberPath="FullNodeName"
HorizontalAlignment="Left" VerticalAlignment="Top" Width="324"
Margin="162,49,0,0" Height="32"
IsDropDownOpen="{Binding Path=ShowDropDown, Mode=TwoWay, Converter= {StaticResource BoolToVis}, UpdateSourceTrigger=PropertyChanged}" />

上面是我的xaml。

每次更改 UserInput(文本的项目源)时,它都会过滤下拉列表的项目源。我现在有了它,以便 ShowDropDown(我的 IsDropDownOpen bool 值)

这是我的 UserInput 和 ShowDropDown 定义:

public string UserInput
{
get { return _userInput; }
set
{
_userInput = value;
FilterListOnKeyPress();
OnPropertyChanged("UserInput");
}
}

public bool ShowDropDown
{
get { return _showDropDown; }
set
{
_showDropDown = value;
OnPropertyChanged("ShowDropDown");
}
}

最后是我对 FilterListOnKeyPress() 的实现

private void FilterListOnKeyPress()
{
if (string.IsNullOrEmpty(UserInput))
{
NodeTokenList = BackUpNodeTokenList;
return;
}
else
{
NodeTokenList = BackUpNodeTokenList.Where(x => x.FullNodeName.ToLower().Contains(UserInput.ToLower())).ToList();
ShowDropDown = true;
}
}

最佳答案

只是一个观察,但 IsDropDownOpen 是一个 bool 属性,看起来好像您在其上使用了 BoolToVisibility 转换器。

关于c# - MVVM/WPF - 当用户在文本框中输入时总是显示组合框下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41188751/

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