2017-05-03 33 views
0

ユーザーがフォーム上の他の場所にデータを保存するときにリフレッシュするInfragistics 15.1 WPF XamDataGridがあります。保存する前に選択した行をプログラムで選択する方法を考えました。私の問題は、その行がグリッドの上の行の1つでない場合、ユーザーは強調表示された行にスクロールバックしなければならないということです。グリッドを選択した行にスクロールさせる方法はありますか?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> 
関連する問題