主控关闭child
Main control to close child
我有一个 MainControl
,其中包含一个 ChildControl
。 ChildControl
有一个可以隐藏自身的隐藏按钮。
隐藏时,我希望 MainControl
挂钩事件并处理它。
- 主控
- ChildControl > 隐藏按钮
不知道我应该如何挂钩。
有什么建议吗?谢谢!
您可以创建一个事件,通知主控件子控件被隐藏,在您的主控件中,处理该事件,您可以处理您的控件。
下面是一个小示例代码,说明如何为隐藏操作创建事件。
class MainControl
{
ChildControl childControl;
public MainControl()
{
childControl = new ChildControl();
childControl.VisibilityChanged += childControl_VisibilityChanged;
}
void childControl_VisibilityChanged(object sender, HiddenEvent e)
{
if (e.isHidden)
{
//close control here
}
}
}
public class HiddenEvent : EventArgs
{
public HiddenEvent(bool propertyValue)
{
this.isHidden = propertyValue;
}
public bool isHidden { get; set; }
}
public class ChildControl
{
public event EventHandler<HiddenEvent> VisibilityChanged;
public ChildControl()
{
}
private bool _isHidden;
public bool Control
{
get
{
return _isHidden;
}
set
{
_isHidden = value;
Hidden_Handler(value);
}
}
private void Hidden_Handler(bool isHidden)
{
var handler = VisibilityChanged;
if (handler != null)
VisibilityChanged(this, new HiddenEvent(isHidden));
}
}
作为一个选项,您可以将 ChildControl 的按钮绑定到主控件上的删除命令(使用 RelativeSource)并让 MainControl 完成所有工作
我有一个 MainControl
,其中包含一个 ChildControl
。 ChildControl
有一个可以隐藏自身的隐藏按钮。
隐藏时,我希望 MainControl
挂钩事件并处理它。
- 主控
- ChildControl > 隐藏按钮
不知道我应该如何挂钩。
有什么建议吗?谢谢!
您可以创建一个事件,通知主控件子控件被隐藏,在您的主控件中,处理该事件,您可以处理您的控件。
下面是一个小示例代码,说明如何为隐藏操作创建事件。
class MainControl
{
ChildControl childControl;
public MainControl()
{
childControl = new ChildControl();
childControl.VisibilityChanged += childControl_VisibilityChanged;
}
void childControl_VisibilityChanged(object sender, HiddenEvent e)
{
if (e.isHidden)
{
//close control here
}
}
}
public class HiddenEvent : EventArgs
{
public HiddenEvent(bool propertyValue)
{
this.isHidden = propertyValue;
}
public bool isHidden { get; set; }
}
public class ChildControl
{
public event EventHandler<HiddenEvent> VisibilityChanged;
public ChildControl()
{
}
private bool _isHidden;
public bool Control
{
get
{
return _isHidden;
}
set
{
_isHidden = value;
Hidden_Handler(value);
}
}
private void Hidden_Handler(bool isHidden)
{
var handler = VisibilityChanged;
if (handler != null)
VisibilityChanged(this, new HiddenEvent(isHidden));
}
}
作为一个选项,您可以将 ChildControl 的按钮绑定到主控件上的删除命令(使用 RelativeSource)并让 MainControl 完成所有工作