我正在尝试在DevExpress.Xpf.Grid
内启用一键式编辑下拉组合框,并且遇到一个相当不寻常的问题,我无法找到解决方案;
我希望能够:
例如;如果我单击单元格A(到Paris
),然后看到它是错误的单元格,并立即单击单元格B(从Vienna
)到它左边,会发生的是第二次单击出现被捕获为某种类型的'close-combo'或escape
事件,并且组合A(To Paris
)关闭,鼠标click
或mouse-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永远不会完成,并且不会引发进一步的鼠标事件。您点击的新单元格甚至从未收到任何焦点或事件。 (就好像组合框吞下了点击一样)