2010-05-29 3 views
2

Я хочу связать ячейку XamDataGrid с помощью управления ComboBox через свойство коллекции (CurrentEntity.INVTransactions) (BatchList), но оно не работает. Я использую mvvm pattern.In мой код «BatchId» и «BatchList» являются свойствами коллекции CurrentEntity.INVTransactions.Проблема с привязкой XamDataGrid

не могли бы вы рассказать мне, почему comboBox xamDataGrid не отображает BatchList?

пример кода:

<UserControl x:Class="PDCL.ERP.Modules.Inventory.Views.RequisitionList.RequisitionInfoUserControl" 
      ...>  
     <GroupBox Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Header="Details" VerticalAlignment="Top" Margin="5,0,5,0"> 
     <Grid> 
      <igDP:XamDataGrid Margin="2" DataSource="{Binding CurrentEntity.INVTransactions}" x:Name="requisitionDeailsGrid" InitializeRecord="requisitionDeailsGrid_InitializeRecord">     
       <igDP:XamDataGrid.FieldLayoutSettings> 
        <igDP:FieldLayoutSettings HighlightAlternateRecords="True" 
             AutoGenerateFields="False" 
             AllowAddNew="True" 
             AddNewRecordLocation="OnBottom" 
             AutoFitMode="Always" 
             SupportDataErrorInfo="RecordsAndCells" 
             DataErrorDisplayMode="ErrorIcon" 
             /> 
       </igDP:XamDataGrid.FieldLayoutSettings> 
       <igDP:XamDataGrid.FieldLayouts> 
        <igDP:FieldLayout> 
         <igDP:FieldLayout.Fields> 
          <igDP:Field Name="Remarks" Label="Remarks" Width="Auto"> 
           <igDP:Field.Settings> 
            <igDP:FieldSettings AllowEdit="True" AllowResize="True"/> 
           </igDP:Field.Settings> 
          </igDP:Field>        
          <igDP:Field Name="BatchId" Label="Batch" Width="Auto"> 
           <igDP:Field.Settings>           
            <igDP:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}"> 
             <igDP:FieldSettings.EditorStyle> 
              <Style TargetType="{x:Type igEditors:XamComboEditor}">              
               <Setter Property="ItemsSource" Value="{Binding INVTransactions.BatchList, RelativeSource = {RelativeSource FindAncestor, AncestorType={x:Type igDP:XamDataGrid}, AncestorLevel=1}}" />              
               <Setter Property="DisplayMemberPath" Value="BatchName" /> 
               <Setter Property="ValuePath" Value="BatchId" /> 
              </Style> 
             </igDP:FieldSettings.EditorStyle> 

            </igDP:FieldSettings> 
           </igDP:Field.Settings> 
          </igDP:Field> 
          <igDP:Field Name="Qty" Label="Qty Supplied" Width="Auto"> 
           <igDP:Field.Settings> 
            <igDP:FieldSettings AllowEdit="True" AllowResize="True"/> 
           </igDP:Field.Settings> 
          </igDP:Field> 
         </igDP:FieldLayout.Fields> 
        </igDP:FieldLayout> 
       </igDP:XamDataGrid.FieldLayouts> 
      </igDP:XamDataGrid> 
      </Grid> 
    </GroupBox> 
    </UserControl> 

Окно вывода показывает «ошибка BindingExpression путь ошибки:. Свойство 'INVTransactions' не найден на 'объекта' '' XamDataGrid '(Имя = 'requisitionDeailsGrid')' BindingExpression: Path = INVTransactions.BatchList; DataItem = 'XamDataGrid' (Name = 'requisitionDeailsGrid'); целевой элемент - «XamComboEditor» (Name = ''); target-свойство - «ItemsSource» (тип «IEnumerable») «

ответ

2

Вы привязывают Item к относительному источнику Xamdatagrid, XamDataGrid не имеет свойства INVTransactions, я думаю, что вы действительно ищете dat asource, связанный с свойством INVTranactions, попробуйте изменить привязку.

{Binding DataSource.BatchList, RelativeSource = {RelativeSource FindAncestor, AncestorType={x:Type igDP:XamDataGrid}, AncestorLevel=1}} 
+0

Bob vale, я решил проблему, но забыл обновить ответ. В любом случае спасибо за вашу попытку. –