让 WPF UserControl 删除自身和绑定的 Data-Object?

Posted

技术标签:

【中文标题】让 WPF UserControl 删除自身和绑定的 Data-Object?【英文标题】:Let WPF UserControl delete itself and Data-Object which is bound to it? 【发布时间】:2009-06-17 08:33:18 【问题描述】:

我在我的 MainWindow 中放置了一个 StackPanel,它会在运行时动态获取新的 UserControls(UserControl 是一行 TextBoxes 和一个名为“Delete”的按钮)。 这是关于我如何创建用户控件的:

PersonObject p = new PersonObject;
List.Add(p);

UserControlLine usrCtrlLine = new UserControlLine();
usrCtrlLine.DataContext = p;

StackPanel.Children.Add(usrCtrlLine);

现在 UserControl 包含如下文本框: TextBox TextWrapping="Wrap" Grid.Column="1" Text="Binding Path=Firstname, Mode=TwoWay"

我的问题是,我怎样才能让 UserControl - 从 StackPanel 中删除自身(“删除”) - 删除绑定的PersonObject p?

非常感谢!

【问题讨论】:

【参考方案1】:

我不确定我是否理解您在此处尝试执行的操作...您想在 StackPanel 中显示人员列表吗?您应该使用 ItemsControl,将其 ItemsPanel 定义为 StackPanel,并将其 ItemTemplate 定义为 UserControlLine:

<ItemsControl ItemsSource="Binding ListOfPersons">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel IsItemsHost="True"/>
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <my:UserControlLine/>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

要删除一个项目,只需将其从人员集合中删除,关联的 UserControlLine 也会从 ItemsControl 中删除(该集合应为 ObservableCollection)

【讨论】:

感谢您的意见!我用您的关键字搜索了更多内容,并在此处找到了很好的示例:galasoft.ch/mydotnet/articles/article-2007041201.aspx

以上是关于让 WPF UserControl 删除自身和绑定的 Data-Object?的主要内容,如果未能解决你的问题,请参考以下文章

数据绑定到 WPF 中的 UserControl

wpf中UserControl的几种绑定方式

WPF - 将 UserControl 可见性绑定到属性

将 ViewModel 的属性绑定到 UserControl 的子控件和自身的 DependencyProperty

从 Catel WPF UserControl 中的 ResourceDictionary 中绑定

将UserControl绑定到ViewModel(Caliburn Micro WPF)