主要控制关闭孩子

时间:2015-08-11 06:08:12

标签: c# events mvvm hook

我有一个MainControl,其中包含ChildControlChildControl有一个隐藏自己的隐藏按钮。 隐藏时,我希望MainControl挂钩事件并处理它。

  • MainControl
    • ChildControl>隐藏按钮

无法弄清楚我应该如何勾选这些。

任何提示?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以创建一个事件,通知主控件隐藏子控件,并在主控件中处理事件,您可以处置您的控件。

以下是一个示例代码,介绍如何为隐藏操作创建活动。

    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));
        }
    }

答案 1 :(得分:0)

作为一个选项,您可以将ChildControl的按钮绑定到主控件上的remove命令(使用RelativeSource),让MainControl完成所有工作