2016-11-29 73 views
0

我能夠綁定SelectedItem如果選擇模式是單一的,但如果它設置爲多個,那麼你如何綁定它?如何在mvvm中綁定多個選定項目的syncfusion xamarin表單datagrid?

這裏是我試過單一選擇模式

<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> 

在上面的XAML中,選擇模式設定爲多,但我無法得到在XAML的SelectedItems這裏提到

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

回答

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

你不能在nuget中找到Xamarin.Behaviors,而是使用Corcav.Behaviors(創建Xamarin.Behaviors的開發者)。 –