WPF Caliburn.Micro ComboBox IsEditable Text Changed 事件直到 Action 事件之后才触发
WPF Caliburn.Micro ComboBox IsEditable Text Changed Event not triggering until after Action Event
我有一个使用 Caliburn.Micro 的测试 WPF 应用程序。我正在尝试使用可以输入的 ComboBox 进行构建。当输入文本时,关联的 DataGrid 信息将 update/filter。
我 运行 遇到的问题是当我的 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”。
如有任何帮助,我们将不胜感激。
您需要使用 KeyUp 事件。
<ComboBox x:Name="SearchOptions"
IsEditable="True"
cal:Message.Attach="[Event KeyUp] = [Action ExecuteSearch($source)]"
MinWidth="200">
</ComboBox>
我有一个使用 Caliburn.Micro 的测试 WPF 应用程序。我正在尝试使用可以输入的 ComboBox 进行构建。当输入文本时,关联的 DataGrid 信息将 update/filter。
我 运行 遇到的问题是当我的 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”。
如有任何帮助,我们将不胜感激。
您需要使用 KeyUp 事件。
<ComboBox x:Name="SearchOptions"
IsEditable="True"
cal:Message.Attach="[Event KeyUp] = [Action ExecuteSearch($source)]"
MinWidth="200">
</ComboBox>