代码之家  ›  专栏  ›  技术社区  ›  mfanto

用作ListBox.ItemTemplate的UserControl中的命令绑定

  •  1
  • mfanto  · 技术社区  · 15 年前

    我有一个 Listbox 用一个 UserControl 作为 DataTemplate . 这个 用户控制 有一个 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 x:Class="Views.FileItem">
       <Canvas x:Name="LayoutRoot">
          <TextBlock x:Name="FileName" Text="{Binding FileName}" />
          <Button Content="Remove"/>
       </Canvas>
    </UserControl>
    

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

    问题是, DataContext 对于每一个 ListBoxItem 与包含 可观测采集 .

    我不知道怎么绑 去除 按钮到 ICommand 在“父”视图模型中。任何帮助都将不胜感激。非常感谢。

    1 回复  |  直到 13 年前
        1
  •  2
  •   kiwipom    15 年前

    我将按钮绑定到用户控件的ViewModel中的一个ICommand,然后使用松散耦合的消息(在大多数MVVM框架中都可用,如 MvvmFoundation )

    让父VM注册“删除我”消息,并相应地更新ObservableCollection…

    希望这有帮助:)