WPF事件的冒泡和隧道

元素可以包含在其他元素中。通过XAML和WPF,可以定义Button包含一个Listbox,该listbox又包含Button控件项。单击一个内层Button控件时,click事件就应该传递到外部。Click事件是一个冒泡事件。PreviewMouseMove事件是一个隧道事件,它从外部向内部移动,外部控件首先接收到内部控件引发的事件。MouseMove事件跟在PreviewMouseMove事件的后面,是一个冒泡事件,从内部向外部移动。WPF支持事件的冒泡和隧道,XAML设计器如下:

    
        
        
    
代码如下:
namespace Cache
{
    public class GblSetting
    {
        public static GblSettingInfo GetById(string GUID)
        {
            GblSettingInfo gblSetting = Server.Call((IGblSettingService t) => t.GetById(GUID)).Map();
            return gblSetting;
        }

        public static ModelList GetListByPiorityAndValue(int piority, string where)
        {
            ModelList lstGblSetting = Server.Call((IGblSettingService t) => t.GetListByPiorityAndValue(piority, where)).Map();
            return lstGblSetting;
        }

        public static bool GetTableValueValid(string basetable, string setValue)
        {
            bool isExsit = Server.Call((IGblSettingService t) => t.CheckTableValueValid(basetable, setValue));
            return isExsit;
        }

        public static ModelList GetListByMenuIdAndSearchValue(string menuId, string searchValue)
        {
            ModelList lstGblSetting = Server.Call((IGblSettingService x) => x.GetListByMenuIdAndSearchValue(menuId, searchValue)).Map();
            return lstGblSetting;
        }
        public static List GetSettingValueByNames(params string[] names)
        {
            List sysParamValues = Server.Call((IGblSettingService t) => t.GetSettingValueByNames(names)).ToList();
            return sysParamValues;
        }

        public static ModelList GetListByKeyNum(string bPUrl)
        {
            ModelList lstGblSetting = Server.Call((IGblSettingService t) => t.GetListByKeyNum(bPUrl)).Map();
            return lstGblSetting;
        }
    }
}

改变源的同时也改变事件类型很常见,例如,Button类响应鼠标的按下和释放事件,向上冒泡他们,而不是创建按钮单击事件。
效果图:
WPF事件的冒泡和隧道_第1张图片

你可能感兴趣的:(WPF基础)