我想在用户在文本框中输入时强制下拉打开。
我有逻辑来过滤列表,当我没有将任何东西绑定到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(文本的项目源)时,它都会过滤下拉列表的itemsource。我现在拥有它以便ShowDropDown(我为IsDropDownOpen布尔)
这是我的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;
}
}
答案 0 :(得分:1)
只是一个观察,但IsDropDownOpen是一个布尔属性,看起来好像你正在使用BoolToVisibility转换器。