从一个组合框到另一个组合框时,自动下拉DevExpress Xpf.Grid中的组合框

时间:2017-09-06 18:55:06

标签: c# wpf devexpress wpfdatagrid devexpress-wpf

我正在尝试在DevExpress.Xpf.Grid内启用一键式编辑下拉组合框,并且遇到一个相当不寻常的问题,我无法找到解决方案;

我希望能够:

  1. 点击包含组合框的任何单元格,让“编辑器”立即显示处于打开状态的组合框
  2. 然后当组合框仍然打开时,单击另一个单元格,当前组合框应该关闭,我刚刚单击的新组合框应该打开(组合框打开)。 enter image description here
  3. 例如;如果我单击单元格A(到Paris),然后看到它是错误的单元格,并立即单击单元格B(从Vienna)到它左边,会发生的是第二次单击出现被捕获为某种类型的'close-combo'或escape事件,并且组合A(To Paris)关闭,鼠标clickmouse-down或{{ 1}}事件永远不会被捕获到其他地方。即,当我实际点击(从previewMouseXX)组合框永远不会打开时。 如果另一个组合框已经打开,那么我实际上必须双击打开单元格B,尽管单元格B配置了Vienna

    我尝试了一堆没有运气的方法。 (他们都专注于让我点击的第一个单元格自动打开,这样可行,但仅适用于第一个单元格。)

    任何帮助都将受到极大的赞赏。

    TXS,

    艾伦

    这是一些演示问题的示例代码;

    immediatePopup="true"

    城市级;

    <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>
    

    和viewmodel;

    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; } } } 事件,如果这样的事情甚至存在,那么您实际点击的地方会被忽略并且点击测试spot永远不会完成,并且不会引发进一步的鼠标事件。您点击的新单元格甚至从未收到任何焦点或事件。 (就好像组合框吞下了点击一样)

0 个答案:

没有答案