2017-07-12 5 views
1

私は複数の行が含まれているDevExpress社グリッド、とXamarinフォームを使用しています。 選択した行/セルの値を取得したいと考えています。どうすればこれを達成できますか?XamarinはDevExpress社グリッドフォーム - アクセスセル

<ScrollView> 
    <dxGrid:GridControl 
     x:Name="grid" 
     ItemsSource="{Binding materials}" 
     AutoFilterPanelVisibility="true" 
     IsReadOnly="true" 
     SortMode="Multiple"> 
      <dxGrid:GridControl.Columns> 
       <dxGrid:TextColumn 
        FieldName="id" 
        Caption = "ID" 
        AutoFilterCondition="Contains"/> 
       <dxGrid:TextColumn 
        FieldName="description" 
        Caption = "Material" 
        AutoFilterCondition="Contains"/> 
      </dxGrid:GridControl.Columns> 
    </dxGrid:GridControl> 
</ScrollView> 

materialsはシンプルなListで、Materialは2つの文字列プロパティ(id、description)を含む単純なクラスです。

答えて

1

あなたがdocumentationで見ることができるように、あなたが選択した行を回復するためにプロパティSelectedRowHandleをバインドすることができますが:

エンドユーザーがグリッド内のデータ行をタップすると、この行が選択になります。グリッド内で現在選択されている行を取得または設定するには、SelectedRowHandleプロパティを使用します。 SelectedDataObjectプロパティは、グリッドで選択された行が対応するデータソースレコードを指定するオブジェクトを返します。グリッドの選択が変更されると、SelectionChangedイベントが発生します。

私は、これはあなたを助けることができると思います。

+0

まあ、私が働いてselectedRowHandleに結合してしまったが、私は、オブジェクトにアクセスすることができません。 – Marcel

+0

私はXamarinがインストールされている私のPCのうち、今が、私はあなたが[selectedRow] '、selectedRowは、たとえば、あなたがそうSelectedRowHandle' – ganchito55

+0

'にバインドされているプロパティの名前である '材料でオブジェクトを取得する必要があることだと思いますしかし、問題は、グリッドをフィルタリングするときに選択されたローが調整されるため、私はこのアプローチを使用できません。 – Marcel

1

は自分自身をそれを考え出し:

<ScrollView> 
    <dxGrid:GridControl 
     x:Name="grid" 
     ItemsSource="{Binding materials}" 
     AutoFilterPanelVisibility="true" 
     IsReadOnly="true" 
     SortMode="Multiple" 
     SelectedRowHandle="{Binding selectedRow, Mode=TwoWay}" 
     SelectedDataObject="{Binding selectedRowObject, Mode=TwoWay}"> 
     <dxGrid:GridControl.Columns> 
      <dxGrid:TextColumn 
       FieldName="description" 
       Caption = "Material" 
       AutoFilterCondition="Contains"/> 
      </dxGrid:GridControl.Columns> 
     </dxGrid:GridControl> 
    </ScrollView> 

とのviewmodel:

private int SelectedRow; 
public int selectedRow 
    { 
     set 
     { 
      if(SelectedRow != value) 
      { 
       SelectedRow = value; 
       if(PropertyChanged != null) 
       { 
        PropertyChanged(this, new PropertyChangedEventArgs("selectedRow")); 
       } 
      } 
     } 
     get 
     { 
      return SelectedRow; 
     } 
    } 

    private Object SelectedRowObject; 
    public Object selectedRowObject 
    { 
     set 
     { 
      if (SelectedRowObject != value) 
      { 
       SelectedRowObject = value; 
       if (PropertyChanged != null) 
       { 
        PropertyChanged(this, new PropertyChangedEventArgs("selectedRowObject")); 
        PropertyChanged(this, new PropertyChangedEventArgs("selectedRowDescription")); 
       } 
      } 
     } 
     get 
     { 
      return SelectedRowObject; 
     } 
    } 

    private String SelectedRowDescription; 
    public String selectedRowDescription 
    { 
     get 
     { 
      if(SelectedRowObject != null && SelectedRowObject is Material) 
      { 
       Material mat = (Material)SelectedRowObject; 
       return mat.description; 
      } else 
      { 
       return "-"; 
      } 
     } 
    } 
関連する問題