现在的位置: 首页 > 综合 > 正文

Siverlight的一些使用心得

2014年03月23日 ⁄ 综合 ⁄ 共 2064字 ⁄ 字号 评论关闭

1:在datagrid 中的Command 绑定变得失效

2:GRID里面的控件不会自动从左到右的放置会被覆盖 ,默认的MARGIN 都是0,0,0,0 使用StackPanel的Orientation="Horizontal 会从左到右的放置

3:枚举的快速遍历转换取值

 object ll = value.ToString().ToInt();
                return AssistExtension.GetEnumName<Gender>((Gender)ll);

public static class AssistExtension
    {
        #region 获取枚举名范型
        /// <summary>
        /// 获取枚举名范型
        /// </summary>
        /// <typeparam name="T">枚举类型</typeparam>
        /// <param name="enumTypeVal">枚举值</param>
        /// <returns>名称</returns>
        public static string GetEnumName<T>(this T enumTypeVal)
        {
            return Enum.GetName(typeof(T), enumTypeVal);
        }
        #endregion

        #region 根据枚举获取对应的索引
        /// <summary>
        /// 根据枚举获取对应的索引
        /// </summary>
        /// <param name="enumObj">枚举对象</param>
        /// <param name="isIgnoreCase">是否忽略大小写</param>
        /// <returns></returns>
        public static int GetIdxForEnum<T>(this T enumObj, bool isIgnoreCase)
        {
            return (int)Enum.Parse(typeof(T), enumObj.ToString(), isIgnoreCase);
        }
        #endregion

        #region 根据枚举获取集合
        /// <summary>
        /// 根据枚举获取集合
        /// </summary>
        /// <typeparam name="T">枚举类型</typeparam>
        /// <returns>集合</returns>
        public static object ReflectionEnum<T>(this object obj)
        {
            List<ComboxItem> list = new List<ComboxItem>();
            if (typeof(T).IsEnum)
            {
                Type enumType = typeof(T);
                FieldInfo[] enumFields = enumType.GetFields();
                foreach (FieldInfo e in enumFields)
                {
                    if (!e.IsSpecialName)
                    {
                        int id = Convert.ToInt32(e.GetRawConstantValue());
                        string name = e.Name.Replace("_", "、");
                        list.Add(new ComboxItem { ID = id, Name = name });
                    }
                }
            }
            return list;
        }
        #endregion

        #region 获取资源模版
        /// <summary>
        /// 获取资源模版
        /// </summary>
        /// <param name="tempDictkey">要获取的模版键对应的枚举</param>
        /// <returns></returns>
        public static DataTemplate GetResourceTemplate(this TemplateDictEnum tempDictkey)
        {
            try
            {
                var res = Application.Current.Resources.MergedDictionaries;
                if (res.Count > 0)
                {
                    var firstTag = (res[0].Values.SyncRoot as object[])[0];
                    if (firstTag.Equals("Office2007Silver"))
                    {
                        if (res[3].Contains(tempDictkey.ToString()))
                        {
                            return res[3][tempDictkey.ToString()] as DataTemplate;
                        }
                        else
                            return null;
                    }
                    else
                    {
                        if (res[2].Contains(tempDictkey.ToString()))
                        {
                            return res[2][tempDictkey.ToString()] as DataTemplate;
                        }
                        else
                            return null;
                    }
                }
                else
                    return null;
            }
            catch
            {
                return null;
            }
        }
        #endregion
    }

4:ObservableCollection<EntityModel> 比 List<EntityModel> 多了自动通知功能比较适合SV的通知绑定特性

5:??(雙問號),意思是取所賦值??左邊的,如果左邊為null,取所賦值??右邊的

抱歉!评论已关闭.