2016-11-29 5 views
0

선택 모드가 단일 인 경우 SelectedItem을 바인딩 할 수 있지만 다중으로 설정된 경우 어떻게 바인딩합니까? 여기 mvvm에서 syncfusion xamarin 양식 DataGrid의 여러 선택한 항목을 바인딩하는 방법?

내가 위의 XAML에서 단일 선택 모드

<sync:SfDataGrid Grid.Row="1" AutoGenerateColumns="False" AllowSorting="True" 
             AllowGroupExpandCollapse="True" AutoExpandGroups="True" 
            SelectionMode="Multiple" ColumnSizer="Star" 
            ItemsSource="{Binding LstItems}" 
             SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}" 
            > 
          <sync:SfDataGrid.Columns> 
           <sync:GridTextColumn HeaderText="Name" MappingName="Name" /> 
           <sync:GridTextColumn HeaderText="MRP" MappingName="MRP"/> 
           <sync:GridTextColumn HeaderText="Category" MappingName="Category" Width="0"/> 
          </sync:SfDataGrid.Columns> 
          <sync:SfDataGrid.GroupColumnDescriptions> 
           <sync:GroupColumnDescription ColumnName="Category"/> 
          </sync:SfDataGrid.GroupColumnDescriptions> 
         </sync:SfDataGrid> 

을위한 노력, 선택 모드가 복수로 설정하지만

https://help.syncfusion.com/xamarin/sfdatagrid/selection

여기에 언급 한 바와 같이 내가 XAML에서 selectedItems를 얻을 수없는 생각되는 것입니다

답변

1

SfDataGrid에서는 SfDataGrid에서 선택한 항목 만 가져올 수 있기 때문에 SfDataGrid.SelectedItems 속성을 SelectedItem 속성처럼보기 모델에 바인딩 할 수 없습니다. 따라서 SelectedItems 속성에 대해 XAML의 값을 바인딩 할 수 없습니다.

그러나 MVVM 패턴에 영향을 미치지 않는 SfDataGrid의 동작을 작성하여 요구 사항을 충족시킬 수 있습니다. 아래 코드 스 니펫을 참조하십시오.

<sfGrid:SfDataGrid x:Name="dataGrid" 
        AutoGenerateColumns="True" 
        ItemsSource="{Binding OrdersInfo}" 
        SelectionMode="Multiple"> 

    <b:Interaction.Behaviors> 
     <b:BehaviorCollection> 
      <b:EventToCommand Command="{Binding SelectionCommand}" 
           CommandParameter="{x:Reference Name=dataGrid}" 
           EventName="SelectionChanged" /> 
     </b:BehaviorCollection> 
    </b:Interaction.Behaviors> 
</sfGrid:SfDataGrid> 

// In ViewModel.cs 

public ViewModel() 
{ 
    selectionCommand = new Command<SfDataGrid>(onSelectionChanged); 
    selectedItems = new ObservableCollection<object>(); 
} 

private Command<SfDataGrid> selectionCommand; 
public Command<SfDataGrid> SelectionCommand 
{ 
    get { return selectionCommand; } 
    set { selectionCommand = value; } 
} 

private ObservableCollection<object> selectedItems; 

public ObservableCollection<object> SelectedItems 
{ 
    get { return selectedItems; } 
    set { selectedItems = value; } 
} 

private void onSelectionChanged(SfDataGrid obj) 
{ 
    //you can get the selected items in the datagrid 
    selectedItems = obj.SelectedItems; 
} 

또한 샘플을 준비했으며 아래 링크에서 다운로드 할 수 있습니다.

샘플 링크 : http://www.syncfusion.com/downloads/support/directtrac/168321/ze/DataGridDemo352928928

감사합니다,

Divakar.

+0

너겟에서 Xamarin.Behaviors를 찾을 수없는 대신 Corcav.Behaviors (Xamarin.Behaviors를 만든 동일한 개발자)를 사용하십시오. –

관련 문제