2013-09-25 3 views
0

필드 중 하나에서 XamComboBox를 호스팅하는 XamDataGrid에 문제가 있습니다. 사용자가 마우스를 사용하여 콤보 상자 열에 포커스를 둔 다음 키보드의 문자를 사용하여 항목을 선택한 다음 탭을 눌러 다음 열로 이동하면 콤보에서 선택한 항목이 손실됩니다.XamComboEditor가 선택을 유지하지 않는 XamDataGrid

컨트롤에 버그가 있는지 또는 사용하고 있는지 확실하지 않지만 CellDeactivating 이벤트를 사용하여 문제를 해결하려고 노력했지만 그 값은 이미 생각한 것 같습니다. 그 시점까지 잃어버린 11.2.20112.2316 버전의 컨트롤을 사용하고 있습니다. 나는 또한 Infragistics forums에 게시했습니다.

이 작은 XAML 및 코드 숨김은이 문제를 보여줍니다.

<Window x:Class="DataGridTest.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:ig="http://infragistics.com/DataPresenter" 
     xmlns:igEditors="http://infragistics.com/Editors" 
     Title="MainWindow" Height="350" Width="525"> 
    <ig:XamDataGrid DataSource="{Binding MyData}" > 
     <ig:XamDataGrid.FieldLayoutSettings> 
      <ig:FieldLayoutSettings AllowAddNew="True" AutoGenerateFields="False" /> 
     </ig:XamDataGrid.FieldLayoutSettings> 
     <ig:XamDataGrid.FieldLayouts> 
      <ig:FieldLayout> 
       <ig:Field Name="Code"> 
        <ig:Field.Settings> 
         <ig:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}"> 
          <ig:FieldSettings.EditorStyle> 
           <Style TargetType="{x:Type igEditors:XamComboEditor}"> 
            <Setter Property="ValuePath" Value="Code" /> 
            <Setter Property="DisplayMemberPath" Value="Description"/> 
            <Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=MyData2}" /> 
           </Style> 
          </ig:FieldSettings.EditorStyle> 
         </ig:FieldSettings> 
        </ig:Field.Settings> 
       </ig:Field> 
       <ig:Field Name="Description"></ig:Field> 
      </ig:FieldLayout> 
     </ig:XamDataGrid.FieldLayouts> 
    </ig:XamDataGrid> 
</Window> 

-

using System; 
using System.ComponentModel; 
using System.Windows; 

namespace DataGridTest 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      MyData = new BindingList<MyModel> 
       { 
        new MyModel {Code = "T1", Description = "Test 1"}, 
        new MyModel {Code = "T2", Description = "Test 2"} 
       }; 

      MyData2 = new BindingList<MyModel> 
       { 
        new MyModel {Code = "T1", Description = "Test 3"}, 
        new MyModel {Code = "T2", Description = "Test 4"} 
       }; 

      DataContext = this; 
     } 

     public BindingList<MyModel> MyData { get; set; } 
     public BindingList<MyModel> MyData2 { get; set; } 
    } 

    public class MyModel 
    { 
     public string Code { get; set; } 
     public string Description { get; set; } 
    } 
} 

답변

관련 문제