Автоматическое раскрытие поля со списком в DevExpress Xpf.Grid при переходе от одного поля со списком к другому
Я пытаюсь включить редактирование раскрывающихся списков в один клик внутри DevExpress.Xpf.Grid
и столкнулся с довольно необычной проблемой, решение которой мне не удалось найти;
Я хочу иметь возможность:
- щелкните любую ячейку, содержащую поле со списком, и "Редактор" немедленно отобразит поле со списком в открытом состоянии.
- затем, пока поле со списком все еще открыто, нажмите на другую ячейку, текущее поле со списком должно закрыться, а новое, которое я только что нажал, должно открыться (с открытым полем со списком).
Например; Если бы я нажал на ячейку 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
событие, если такая вещь вообще существует, и где вы на самом деле нажали, игнорируется, и тестирование попаданий в этом месте никогда не выполняется, и дальнейшее событие мыши не вызывается. Та новая ячейка, на которую вы нажали, никогда не получает никакого фокуса или событий. (как будто поле со списком проглотило щелчок)