2016-03-15 2 views
1

У меня есть пользовательский элемент управления в проекте WPF PRISM, откуда на кнопку мыши (команда обязана) следующая функция называется:Передача списка из пользовательского элемента управления в окне

private async void UpdateStoreSet() 
     { 
      List<ValidationData> failedData = await _adapter.UpdateStoreSetData(this.DataList.Result as List<StoreSetData>); 

      if (failedData != null && failedData.Count > 0) 
      { 
       FailedValidationViewModel objFaliedVM = new FailedValidationViewModel(_errorHandler, _dlgService, failedData); 
       //objFaliedVM.DataList = failedData; 
       Windows.FailedValidation win = new Windows.FailedValidation(objFaliedVM, _errorHandler); 
       win.Owner = System.Windows.Application.Current.MainWindow; 
       win.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; 
       win.ShowDialog(); 
       //_dlgService.ShowMessageBox(failedData.Count.ToString() + " records failed validation!", "Failure", MessageBoxButton.OK, MessageBoxImage.Error); 
      } 
      else 
      { 
       // Refresh the list 
       SearchPlanograms(); 
      } 
     } 

В конструкторе Window View Model , здесь написано:

public FailedValidationViewModel(IErrorHandlerService inErrorHandler, IDialogService inDlgService, List<ValidationData> lstFailedList) 
     { 
      // Set dependency injected services to local variables 
      _errorHandler = inErrorHandler;    
      _dlgService = inDlgService; 

      //Instantiate the failed validation list 
      DataList = lstFailedList; 

      // Instantiate the command 
      this.ExportToExcelCommand = new DelegateCommand<object>(this.ExportToExcel); 
     } 

     #endregion 

     #region Properties 

     public List<ValidationData> DataList 
     { 
      get 
      { 
       return _failedValidation; 
      } 
      set 
      { 
       if (_failedValidation != value) 
       { 
        SetProperty(ref _failedValidation, value); 
       } 
      } 
     } 

     #endregion 

После сетка отображается в окне:

<dxg:GridControl x:Name="gridFailedFloorplans" Grid.Row="0" AutoGenerateColumns="None" 
      ItemsSource="{Binding DataList.Result.View}" AutoExpandAllGroups="True" DefaultSorting="Name"       
      dx:ThemeManager.Theme="Default" Height="350" Width="580"> 
      <dxg:GridControl.View> 
       <dxg:TableView AllowGrouping="True" ShowGroupPanel="False" AllowEditing="False" AutoWidth="True" Name="gridFailedValidationTableView"/> 
      </dxg:GridControl.View>    
      <dxg:GridControl.Columns> 
       <dxg:GridColumn FieldName="abc" /> 
       <dxg:GridColumn FieldName="def" /> 
       <dxg:GridColumn FieldName="efg" /> 
       <dxg:GridColumn FieldName="ghi" /> 
       <dxg:GridColumn FieldName="jkl FixedWidth="True" Width="100" /> 
       <dxg:GridColumn FieldName="mmm" FixedWidth="True" Width="100" />     
      </dxg:GridControl.Columns> 
     </dxg:GridControl> 

Но сетка с пустым значением ItemsSource = null. Я не знаю, как это исправить. Пожалуйста помоги.

+2

Проверьте ошибки привязки в окне «Выход». Имеет ли смысл привязка к 'DataList.Result.View'? – Sinatr

+0

Вы настраиваете DataContext в своем окне на виртуальную машину? – auburg

+0

Призма или DevExpress? – Coding4Fun

ответ

0

не должен связывание быть

<dxg:GridControl .... 
     ItemsSource="{Binding DataList}" 

В противном случае его в поисках недвижимости Result на List<ValidationData>, что не существует и приводит к нулевой itemsSource.

Смежные вопросы

 Смежные вопросы