首页 > 解决方案 > 离开 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 呢?这样当我点击组合框时,就会触发一个消息框。

标签: c#wpfmvvmdatagrid

解决方案


我想你想要PreviewLostKeyboardFocusLostKeyboardFocus,所以这里检查Detect when a ListBoxItem is in the SelectedUnfocused state and WPF Combobox lostfocus event become an Infinite lopp


推荐阅读