Автоматическое раскрытие поля со списком в DevExpress Xpf.Grid при переходе от одного поля со списком к другому

Я пытаюсь включить редактирование раскрывающихся списков в один клик внутри DevExpress.Xpf.Grid и столкнулся с довольно необычной проблемой, решение которой мне не удалось найти;

Я хочу иметь возможность:

  1. щелкните любую ячейку, содержащую поле со списком, и "Редактор" немедленно отобразит поле со списком в открытом состоянии.
  2. затем, пока поле со списком все еще открыто, нажмите на другую ячейку, текущее поле со списком должно закрыться, а новое, которое я только что нажал, должно открыться (с открытым полем со списком).

Например; Если бы я нажал на ячейку A (Для Paris), а затем увидел, что это была неправильная ячейка, и сразу же нажмите ячейку B(из Vienna) слева от него, что происходит, что второй щелчок, кажется, захвачен как некоторый тип 'close-combo' или escape событие и комбо A (Для Paris) закрывается и мышка click или же mouse-down или же previewMouseXX событие никогда не фиксируется где-либо еще. то есть пока я на самом деле нажал (От Vienna) это поле со списком никогда не открывается. Если другой выпадающий список уже открыт, тогда мне фактически нужно дважды щелкнуть, чтобы открыть ячейку B, несмотря на то, что ячейка B настроена с immediatePopup="true" ,

Я попробовал кучу подходов без удачи. (Все они направлены на получение первой ячейки, которую я нажимаю, чтобы автоматически открыть, и это работает, но только для первой ячейки.)

Любая помощь будет очень цениться.

TXS,

Алан

вот пример кода, который демонстрирует проблему;

<Window 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:Grid1"
        x:Class="Grid1.MainWindow"

        xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" 
        xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"  

        Title="Trip Details" Height="350" Width="625">

    <Window.DataContext>
        <local:MainWindowViewModel/>
    </Window.DataContext>

    <Grid>
        <dxg:TableView>
        </dxg:TableView>
        <dxg:GridControl ItemsSource="{Binding Customers}">
            <dxg:GridControl.Columns>

                <dxg:GridColumn FieldName="Name"/>

                <dxg:GridColumn FieldName="From">
                    <dxg:GridColumn.EditSettings>
                        <dxe:ComboBoxEditSettings ImmediatePopup="True" ItemsSource="{Binding Cities}" AutoComplete="True" IsTextEditable="False" DisplayMember="Name" ValueMember="Id"/>
                    </dxg:GridColumn.EditSettings>
                </dxg:GridColumn>

                <dxg:GridColumn FieldName="To">
                    <dxg:GridColumn.EditSettings>
                        <dxe:ComboBoxEditSettings  ImmediatePopup="True" ItemsSource="{Binding Cities}" AutoComplete="True" IsTextEditable="False" DisplayMember="Name" ValueMember="Id"/>
                    </dxg:GridColumn.EditSettings>
                </dxg:GridColumn>

                <dxg:GridColumn FieldName="Depart"/>
                <dxg:GridColumn FieldName="Return"/>

            </dxg:GridControl.Columns>
        </dxg:GridControl>
    </Grid>
</Window>

Городской класс;

namespace Grid1
{
    public class City
    {
        public int Id { get; set; }
        public string Name { get; set; }

        public static List<City> GetCities()
        {
            return new List<City>()
            {
                new City() { Id = 1, Name = "London"},
                new City() { Id = 2, Name = "Paris"},
                new City() { Id = 3, Name = "Vienna"},
                new City() { Id = 4, Name = "Cambridge"}
            };
        }
    }

    public enum  CityId {  London = 1, Paris, Vienna, Cambridge }
}

и модель представления;

namespace Grid1
{
    public class MainWindowViewModel
    {
        public MainWindowViewModel()
        {
            Customers = Trip.GetCustomers();
            Cities = City.GetCities();
        }

        public List<Trip> Customers { get; set; }
        public List<City> Cities { get; set; }
    }
}

Резюме:

Когда комбинированный список только что открылся в результате одного щелчка (это работает), при щелчке мышью (сразу на вторую ячейку, чтобы эта ячейка показывала свой комбинированный список, который не работает), это почти как если бы этот щелчок превращается в какой-то тип click-away событие, если такая вещь вообще существует, и где вы на самом деле нажали, игнорируется, и тестирование попаданий в этом месте никогда не выполняется, и дальнейшее событие мыши не вызывается. Та новая ячейка, на которую вы нажали, никогда не получает никакого фокуса или событий. (как будто поле со списком проглотило щелчок)

0 ответов

Другие вопросы по тегам