2016-04-07 3 views
1

Ich habe Schwierigkeiten, 2 Listenansichten ausgewählte Elemente zu meinem Viewmodel zu binden.
Die Idee besteht darin, eine Ansicht mit 2 Listenansichten und 2 Schaltflächen dazwischen zu haben, um die (mehrere) ausgewählten Elemente von 1 Listenansicht in eine andere (2-Wege) zu verschieben (
).Binding Listview SelectedItems für Aktionen

Aussicht:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <ListView x:Name="DuamResources" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"/> 
       <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Name}"/> 
      </GridView> 
     </ListView.View> 
     <ListView.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.HeaderTemplate> 
        <DataTemplate> 
         <TextBlock FontWeight="Bold" FontSize="14" Text="{Binding Name}"/> 
        </DataTemplate> 
       </GroupStyle.HeaderTemplate> 
      </GroupStyle> 
     </ListView.GroupStyle> 
    </ListView> 
    <StackPanel Grid.Column="1" Orientation="Vertical" cal:Action.TargetWithoutContext="{Binding SelectedDuamResources}" VerticalAlignment="Center"> 
     <Button Content="&lt;" Width="40" Margin="5" cal:Message.Attach="AddSelectedResources($datacontext)"/> 
     <Button Content="&gt;" Width="40" Margin="5"/> 
    </StackPanel> 
    <ListView x:Name="AvailableDuamResources" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"/> 
       <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Name}"/> 
      </GridView> 
     </ListView.View> 
     <ListView.GroupStyle> 
      <GroupStyle HidesIfEmpty="True"> 
       <GroupStyle.HeaderTemplate> 
        <DataTemplate> 
         <TextBlock FontWeight="Bold" FontSize="14" Text="{Binding Type}"/> 
        </DataTemplate> 
       </GroupStyle.HeaderTemplate> 
      </GroupStyle> 
     </ListView.GroupStyle> 
    </ListView> 
</Grid> 

Die zugehörigen Ansichtsmodell Eigenschaften:

private ObservableCollection<DuamResourceInfo> availableDuamResources; 
     public ObservableCollection<DuamResourceInfo> AvailableDuamResources 
     { 
      get { return availableDuamResources; } 
      set { availableDuamResources = value; NotifyOfPropertyChange(() => AvailableDuamResources); } 
     } 

     private ObservableCollection<DuamResourceInfo> selectedDuamResources; 
     public ObservableCollection<DuamResourceInfo> SelectedDuamResources 
     { 
      get { return selectedDuamResources; } 
      set { selectedDuamResources = value; NotifyOfPropertyChange(() => SelectedDuamResources); } 
     } 

     private ObservableCollection<DuamResourceInfo> duamResources; 
     public ObservableCollection<DuamResourceInfo> DuamResources 
     { 
      get { return duamResources; } 
      set { duamResources = value; NotifyOfPropertyChange(() => DuamResources); } 
     } 

Der Code, den ich erreichen möchte:

public void AddSelectedResources(IEnumerable<DuamResourceInfo> resources) 
{ 

} 

public void RemoveSelectedResources(IEnumerable<DuamResourceInfo> resources) 
{ 

} 

denn ich bin mit Caliburn Micro MVVM . Ich weiß, dass es einige Konventionen für die Bindung gibt, aber ich bin mir nicht sicher, ob sie sich auf dieses Szenario beziehen.

Jede Hilfe wird sehr geschätzt!

Antwort

0

Haben Sie versucht, "x: Bind" anstelle von "Binding" zu verwenden? Aus irgendeinem Grund hat in der Vergangenheit der eine oder andere für mich gearbeitet, aber nicht beide, je nach Situation.