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

标签 c# wpf mvvm

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

我有适当的逻辑来过滤列表,当我没有将任何东西绑定(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/

相关文章:

c# - 如果内容字符串宽度大于 ListBox 宽度,Winforms DotNet ListBox 项目是否自动换行?

wpf - WPF 中的模态对话框

c# - StackPanel 内的 StackPanel 对齐不正确

c# - 使用WPF MVM在ViewModel中访问XAML元素并在运行时应用动态样式

javascript - 使用knockoutjs从模板中的下拉列表中更新文本区域

ajax - Knockout JS - 使用 AJAX 调用更新 viewModel

c# - Winform显示屏幕分辨率

c# - 如何为每个文件系统观察器分配单独的线程?

c# - 即使字符串匹配,正则表达式验证也会显示错误

mvvm - 我应该在哪里为 SwiftUI 中的 View 创建模型实例?