【问题标题】:WPF Caliburn.Micro ComboBox IsEditable Text Changed Event not triggering until after Action EventWPF Caliburn.Micro ComboBox IsEditable Text Changed Event 直到 Action Event 之后才触发
【发布时间】:2020-03-06 20:58:30
【问题描述】:

我有一个使用 Caliburn.Micro 的测试 WPF 应用程序。我正在尝试使用可以输入的 ComboBox 进行构建。相关的 DataGrid 信息将在输入文本时更新/过滤。

我遇到的问题是当我的 ExecuteSearch 事件被触发时。它在编辑文本之前传递信息。我想知道如何在按下键后将文本信息传递给函数。

任何帮助将不胜感激。相关代码如下:

查看:

<TextBlock Text="Search: " />
<ComboBox x:Name="SearchOptions"
          IsEditable="True"
          DisplayMemberPath="Search"
          cal:Message.Attach="[Event KeyDown] = [Action ExecuteSearch($source)]"
          MinWidth="200">
</ComboBox>

视图模型:

public void ExecuteSearch(object searchText)
    {
        ComboBox searchbox = (ComboBox)searchInfo;
        if (searchbox.Text != null && searchbox.Text != "")
        {
            string sql = "SELECT * FROM SearchItems WHERE PartNumber LIKE " + searchbox.Text +"";
            SearchItems = SqliteConnector.LoadData<SearchItemsModel>(sql, new Dictionary<string, object>());
        }
        else
        {
            string sql = "SELECT * FROM SearchItems";
            SearchItems = SqliteConnector.LoadData<SearchItemsModel>(sql, new Dictionary<string, object>());
        }
    }

当事件被触发时searchbox.Text == "" 即使输入了“0”。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# wpf combobox action caliburn.micro


    【解决方案1】:

    您需要使用 KeyUp 事件。

    <ComboBox x:Name="SearchOptions"
              IsEditable="True" 
              cal:Message.Attach="[Event KeyUp] = [Action ExecuteSearch($source)]"
              MinWidth="200">
            </ComboBox>
    

    【讨论】:

    • 这完全有道理。不知道我在想什么。我还找到了另一种更新方式。但我认为这个答案要简单得多。
    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2011-07-07
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    相关资源
    最近更新 更多