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 とは異なる ViewModel であることObservableCollectionです。

RemoveボタンをICommand「親」ビューモデルにバインドする方法がわかりません。どんな助けでも大歓迎です。本当にありがとう。

4

1 に答える 1

2

ボタンを UserControl の ViewModel の ICommand にバインドし、疎結合メッセージング ( MvvmFoundation などのほとんどの Mvvm フレームワークで利用可能) を使用して親 ViewModel にメッセージを送信します

親 VM に「削除してください」メッセージを登録させ、それに応じて ObservableCollection を更新します...

お役に立てれば :)

于 2009-12-14T06:57:19.913 に答える