1

我有一个Listbox与一个UserControl作为DataTemplate。这UserControl有一个Button从列表中删除该项目。

<ListBox x:Name="FileList" ItemsSource="{Binding Files}" >  
   <ListBox.ItemTemplate>
      <DataTemplate>
         <Views:FileItem/>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

ItemsSource定义为:

ObservableCollection<FileViewModel> m_fileViews = new ObservableCollection<FileViewModel>();

这是UserControl简化的:

<UserControl x:Class="Views.FileItem">
   <Canvas x:Name="LayoutRoot">
      <TextBlock x:Name="FileName" Text="{Binding FileName}" />
      <Button Content="Remove"/>
   </Canvas>
</UserControl>

当用户单击Remove按钮时,它应该从ObservableCollection.

问题是,DataContextfor eachListBoxItem的 ViewModel 与持有ObservableCollection.

我不确定如何将Remove按钮绑定到ICommand“父”视图模型中的一个。任何帮助,将不胜感激。非常感谢。

4

1 回答 1

2

我会将按钮绑定到 UserControl 的 ViewModel 中的 ICommand,然后使用松散耦合的消息传递(在大多数 Mvvm 框架中可用,如MvvmFoundation)向父 ViewModel 发送消息

让父虚拟机注册“删除我”消息,并相应地更新 ObservableCollection...

希望这可以帮助 :)

于 2009-12-14T06:57:19.913 回答