2017-05-03 1 views
0

사용자가 양식의 다른 곳에 데이터를 저장할 때 새로 고치는 Infragistics 15.1 WPF XamDataGrid가 있습니다. 저장하기 전에 선택된 행을 프로그래밍 방식으로 선택하는 방법을 알아 냈습니다. 내 문제는 해당 행이 그리드의 맨 위 행 중 하나가 아닌 경우 사용자가 강조 표시된 행으로 다시 스크롤해야한다는 것입니다. 선택된 행으로 그리드 스크롤을하는 방법이 있습니까?XamDataGrid에서 선택된 행으로 스크롤

XAML 코드

<inf:XamDataGrid GroupByAreaLocation="None"        
          SelectedDataItem="{Binding SelectedPayItem, Mode=TwoWay}" 
          ActiveDataItem="{Binding SelectedPayItem, Mode=OneWay}" 
          DataSource="{Binding SelectedProject.ContractProjectPayItems}" ScrollViewer.VerticalScrollBarVisibility="Auto" 

          Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2" Margin="2.8,3.4,3,2.8"> 

보기 모델 코드

private void SetSelectedPayItem() 
    { 
     if (SelectedProject != null) 
     { 
      if (SelectedProject.ContractProjectPayItems.Count() > 0) 
      { 
       if (SelectedProject.SelectedPayItemLineNbr == -1) 
       { 
         SelectedPayItem = SelectedProject.ContractProjectPayItems.First(); 
       } 
       else 
       { 
        if (strLineItemNbr != null) 
        { 
         SelectedPayItem = SelectedProject.ContractProjectPayItems.FirstOrDefault(CPPI => CPPI.LineItemNbr == strLineItemNbr); 
        } 
        else 
        { SelectedPayItem = SelectedProject.ContractProjectPayItems[SelectedProject.SelectedPayItemLineNbr]; } 
       } 
      } 
      else 
      { 
       SelectedPayItem = null; 
      } 
     } 
    } 

    string strLineItemNbr; 
    private ContractProjectPayItemModel _selectedPayItem; 
    public ContractProjectPayItemModel SelectedPayItem 
    { 
     get { return _selectedPayItem; } 
     set 
     { 
      _selectedPayItem = value; 
      if (_selectedPayItem != null) 
      { 
       SelectedProject.SelectedPayItemLineNbr = SelectedProject.ContractProjectPayItems.IndexOf(_selectedPayItem); 
       if (_selectedPayItem.ItemInstallations == null) 
       { 
        var oItemInstallation = new clsItemInstallation(); 
        _selectedPayItem.ItemInstallations = oItemInstallation.GetItemInstallsByProjectPayItem(_selectedPayItem.ProjectGuid, _selectedPayItem.PayItemGuid); 

        foreach (var itemInstallation in _selectedPayItem.ItemInstallations) 
        { 
         itemInstallation.PropertyChanged += ItemInstallationsPropertyChanged; 
         itemInstallation.AcceptChanges(); 
        } 
        _selectedPayItem.AcceptChanges(); 
        foreach (var ii in SelectedProject.ContractProjectPayItems) 
        { 
         if (ii.ItemInstallations != null) 
         { 
          foreach (var i2 in ii.ItemInstallations) 
          { 
           i2.AcceptChanges(); 
          } 
         } 
        } 
        RaisePropertyChanged("TotalInstallQty"); 
       } 
       _itemInstallViewModel.SelectedProjectLineItem = SelectedPayItem; 
       strLineItemNbr = SelectedPayItem.LineItemNbr; 
      } 
      RaisePropertyChanged("SelectedPayItem"); 
      RaisePropertyChanged("IsBitumen"); 

      //---------------------------------- 
      // Populate the User Control tabs. 
      //---------------------------------- 
      PopulateUserControls(); 

      SetSelectedItemInstallation(); 

      RaisePropertyChanged("TotalInstallQty"); 
     } 
    } 

답변

1

나는 이것이 내가 DataSource 속성의 내부 SelectedDataItem를 이동하여 원하는 방식으로 작동 얻을 수 있었다.

<inf:XamDataGrid GroupByAreaLocation="None"    
         DataSource="{Binding SelectedProject.ContractProjectPayItems}" 
         ScrollViewer.VerticalScrollBarVisibility="Auto" 
         SelectedDataItem="{Binding SelectedPayItem, Mode=TwoWay}" 
         ActiveDataItem="{Binding SelectedPayItem, Mode=TwoWay}" 
         Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2" Margin="2.8,3.4,3,2.8"> 
     </inf:XamDataGrid> 
관련 문제