c# - 离开 ComboBox 时如何触发?
问题描述
所以我有一个 DataGrid 并且我有一个DataGridTemplateColumn。在该模板列中,我在其中放置了一个组合框。ComboBox 从我的 ViewModel 中的 ObservableCollections 中获取了他的数据。所以我的代码现在看起来像这样:
<DataGridTemplateColumn Header="Status" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="cbStatus"
ItemsSource="{Binding Path=ocLieferumfangStati, ElementName=vmLieferumfang}"
Width="100" HorizontalAlignment="Left"
DisplayMemberPath="Beschreibung"
SelectedValue="{Binding Status}"
SelectedValuePath="Status" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
但我现在想做的是,当我离开 ComboBox 时有一个事件触发什么。类似于 DataGrid 事件CellEditEnding。
我已经尝试过的是在我的 MVVM 中:
ocLieferumfangStati.CollectionChanged += (sender, e) =>
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
MessageBox.Show("ADD");
}
if (e.Action == NotifyCollectionChangedAction.Move)
{
MessageBox.Show("Move");
}
if (e.Action == NotifyCollectionChangedAction.Remove)
{
MessageBox.Show("Remove");
}
if (e.Action == NotifyCollectionChangedAction.Replace)
{
MessageBox.Show("Replace");
}
};
但是只触发了删除操作。
我不能在 ComboBox 中写入,我只能选择 ComboBox 中的项目。那么,当我离开 ComboBox 时,如何才能发出 MessageBox 呢?这样当我点击组合框时,就会触发一个消息框。
解决方案
我想你想要PreviewLostKeyboardFocus
或LostKeyboardFocus
,所以这里检查Detect when a ListBoxItem is in the SelectedUnfocused state
and WPF Combobox lostfocus event become an Infinite lopp
推荐阅读
- angularjs - Ng-Repeat 没有显示正确的结果
- javascript - 到0时停止倒计时
- c++ - 从字符串向量填充 boost::dynamic_bitset<> 的最快方法
- javascript - 我在 HTML 中的按钮 onclick 事件将调用我的函数但不返回 alert()
- f# - FSharp POST F# 数据中的多个键/值对:HTTP 实用程序
- java - Android Studio 如何从数据库中保存静态变量
- wpf - ListView 绑定开箱即用,而自定义实现不是?
- android - 创建一个新的 Google_maps.api.xml 文件而不创建新的地图活动?
- vhdl - 为什么我会收到推断的闩锁错误?
- c# - NReco.VideoConverter.ConvertLiveMedia