正在从同一用户控件中处置用户控件
本文关键字:用户 控件 | 更新日期: 2023-09-27 18:19:34
我有一个具有Mainform的wpf应用程序,我正在动态添加一个自定义用户控件;自定义用户控件hase关闭按钮,该按钮应处理用户控件。我无法从自身处理相同的用户控件(在winform应用程序中我怎么能做到这一点)。现在我正在使用自定义事件委托来实现此功能(从主窗口,通过从网格中远程处理控件)。
有人能提出更好的方法吗?
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for ChildControl.xaml
/// </summary>
public partial class ChildControl : UserControl
{
public delegate void onCloseOfControl();
public event onCloseOfControl CloseBtnEvent;
//This control will be added into
// grid of Mainwindow.
public ChildControl()
{
InitializeComponent();
}
//I want to remove this whole control
private void btnCloseOnChild_Click(object sender, RoutedEventArgs e)
{
//this.Dispose();
//Not Possible In wpf,I could do this in Winforms.
//Now I am wrting this logic
if (CloseBtnEvent != null)
CloseBtnEvent();
//Now main window will get this event,and I will
//remove this control from grid.
}
}
}
通常在WPF中,UserControl
不需要。。。它们不而实现CCD_ 2接口。它们不包含任何需要处理的服务或其他成员。WPF UserControl
与WinForms UserControl
几乎没有相似之处,您越早停止将WPF与WinForms进行比较,就越能更好地学习WPF。
移除或替换UserControl
的简单操作就足以释放它可能占用的任何资源。我们经常在WPF中使用DataTemplate
来让框架为我们显示UserControl
:
<DataTemplate DataType="{x:Type ViewModels:UsersViewModel}">
<Views:UsersView />
</DataTemplate>
<ContentControl Content="{Binding ViewModel}" />
在进行此操作时,更换UserControl
所需的操作如下:
ViewModel = new UsersViewModel();
您的UserControl应该实现当您按下关闭按钮时触发的事件。然后,您的窗体应该通过处理控件来对此事件作出反应。您无法从控件内部处置控件。