Как закрыть DevExpress WPF ComboBox, когда выбрана строка вложенной сетки?

Я использую элементы управления DevExpress WPF, особенно BarEditItem, ComboBoxEdit и GridControl. Обычно при использовании стандартного ComboBoxEdit при выборе элемента поле со списком закрывается.

Однако сейчас я устанавливаю ComboBoxEditSettings.PopupContentTemplate в GridControl. Всякий раз, когда я выбираю строку в GridControl (щелкая по ней), я хочу, чтобы раскрывающийся список закрывался. Это работает, когда я нажимаю клавишу, но не когда я просто нажимаю запись.

XAML выглядит так:

<dxb:BarEditItem.EditSettings >
                <dxe:ComboBoxEditSettings 
                    ItemsSource="{Binding Path=EditieCollection}"
                    DisplayMember="JaarEditieNummer"
                    AutoComplete="True"
                    Name="editieComboBox" AcceptsReturn="True" IncrementalFiltering="False" ImmediatePopup="True">
                    <dxe:ComboBoxEditSettings.PopupContentTemplate >
                        <ControlTemplate>
                            <dxg:GridControl 
                                Name="PART_GridControl" 
                                ItemsSource="{Binding Path=EditieCollection}" 
                                AutoPopulateColumns="False" ShowBorder="False"
                                >
                                <dxg:GridControl.Columns>
                                    <dxg:GridColumn x:Name="EditieJaarEditieNummer" FieldName="JaarEditieNummer" Header="Editie" Width="90" />
                                    <dxg:GridColumn x:Name="EditieOplage"  FieldName="OplageDatum" Header="Oplage" Width="90" />
                                    <dxg:GridColumn x:Name="EditieVerschijning"  FieldName="Datum" Header="Verschijnt" Width="90" />
                                    <dxg:GridColumn x:Name="EditieOmschrijving"  FieldName="Omschrijving" Header="Omschrijving" />
                                </dxg:GridControl.Columns>
                                <dxg:GridControl.View>
                                    <dxg:TableView 
                                        Width="Auto" 
                                        AllowGrouping="False" IsGroupPanelMenuEnabled="False" 
                                        FocusedRow="{Binding Path=SelectedEditie, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
                                        AllowEditing="False" AllowMoveColumnToDropArea="False" AllowMoving="False" 
                                        NavigationStyle="Row" ShowGroupPanel="False"
                                        />
                                </dxg:GridControl.View>
                            </dxg:GridControl>
                        </ControlTemplate>
                    </dxe:ComboBoxEditSettings.PopupContentTemplate>
                </dxe:ComboBoxEditSettings>
            </dxb:BarEditItem.EditSettings>

Я видел другие решения, в которых можно было бы установить для свойства .IsOpen стандартного элемента управления ComboBox значение false, но DevExpress ComboBoxEdit не имеет такого свойства (по крайней мере, я не знаю).

Спасибо!


person Sipke Schoorstra    schedule 09.02.2012    source источник


Ответы (1)


Теперь я устанавливаю ComboBoxEditSettings.PopupContentTemplate в GridControl.

Я считаю, что в этом случае лучше выбрать LookUpEdit вместо поля со списком:

<dxb:BarEditItem Name="bEditItem" >
    <dxb:BarEditItem.EditSettings >
        <dxg:LookUpEditSettings ItemsSource="{Binding ...}"
                            DisplayMember="..." 
                            ValueMember="...">
        </dxg:LookUpEditSettings>
    </dxb:BarEditItem.EditSettings>
</dxb:BarEditItem>

В любом случае, вы можете использовать свойство IsPopupOpen, чтобы закрыть всплывающее окно.

person DmitryG    schedule 09.02.2012
comment
Использование LookUpEdit вместо ComboBoxEditSettings сработало как шарм! - person Sipke Schoorstra; 13.02.2012