2016-04-07 24 views
1

Seçilen öğeler için 2 listeyi seçilen listeye bağlama konusunda mücadele ediyorum.
Buradaki fikir, 1 liste görünümünden diğerine (2 yol)
(çoklu) seçili öğeyi taşımak için 2 liste görünümü ve 2 düğme arasında bir görünüm sağlamaktır.Bağlama Listview Eylemler için SelectedItems

görünüm:

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

ilişkili ViewModel özellikleri:

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); } 
     } 

elde etmek istiyorum kod: Ben MVVM için Caliburn Micro kullanıyorum

public void AddSelectedResources(IEnumerable<DuamResourceInfo> resources) 
{ 

} 

public void RemoveSelectedResources(IEnumerable<DuamResourceInfo> resources) 
{ 

} 

. Bağlama için bazı sözleşmeler olduğunu biliyorum ama bu senaryo için geçerli olduklarından emin değilim.

Herhangi bir yardım büyük beğeni topluyor!

cevap

0

"Binding" yerine "x: Bind" kullanmayı denediniz mi? Geçmişteki bir sebepten ötürü ya da diğeri benim için işe yaradı, fakat ikisine de değil, duruma bağlı olarak.