none
SL ChildWindow的错误修正及功能扩充。 RRS feed

  • 常规讨论

  •  

    using System.Windows;
    using System.Windows.Controls;

    namespace CT
    {
        /// <summary>
        /// 继承原SL的ChildWindow。

        /// 更新他的诡秘错误(比如有时候窗口关闭后,他仍然不激活遮罩的控件)
        /// </summary>
        public class T4ChildWindow : ChildWindow
        {
            public T4ChildWindow()
                : base()
            {
                //Do nothing.

            }
            //修正其Close后,有时候主窗体仍然不能访问的错误
            protected override void OnClosed(System.EventArgs e)
            {
                base.OnClosed(e);
                Application.Current.RootVisual.SetValue(Control.IsEnabledProperty, true);
            }
            /// <summary>
            /// 根据SL插件大小调整对话框大小(最小宽度300, 最小高度200, 左右边距50, 上下边距50)
            /// </summary>
            /// <returns>对话框大小</returns>
            public void SetDlgSizeByAppRoot()
            {
                SetDlgSizeByAppRoot(300, 200, 50, 50);
            }
            /// <summary>
            /// 根据SL插件大小调整对话框大小(最小宽度MinWidth, 最小高度MinHeight, 左右边距50, 上下边距50)
            /// </summary>
            /// <param name="MinWidth">最小宽度</param>
            /// <param name="MinHeight">最小高度</param>
            /// <returns>对话框大小</returns>
            public void SetDlgSizeByAppRoot(int MinWidth, int MinHeight)
            {
                SetDlgSizeByAppRoot(MinWidth, MinHeight, 50, 50);
            }
            /// <summary>
            /// 根据SL插件大小调整对话框大小(最小宽度MinWidth, 最小高度MinHeight, 左右边距50, 上下边距50)
            /// </summary>
            /// <param name="MinWidth">最小宽度</param>
            /// <param name="MinHeight">最小高度</param>
            /// <param name="EdgWidth">左右边距</param>
            /// <param name="EgeHeight">上下边距</param>
            /// <returns></returns>
            public void SetDlgSizeByAppRoot(int MinWidth, int MinHeight, int EdgWidth, int EgeHeight)
            {
                var ElRoot = (FrameworkElement)Application.Current.RootVisual;
                var S = new Size()
                {
                    Width = ElRoot.ActualWidth - EdgWidth,
                    Height = ElRoot.ActualHeight - EgeHeight
                };
                if (S.Width < MinWidth) { S.Width = MinWidth; }
                if (S.Height < MinHeight) { S.Height = MinHeight; }
                base.Width = S.Width; base.Height = S.Height;
            }
        }
    }

     

    注:TFSoft目前准备重写ChildWindow,使之能够放大、缩小、最大化、最小化,支持Modal、Modelles模式。

     TFSoft = Simple, Nice, Elegant. TFSoft 研究C#+SL已10个月了。

    • 已更改类型 Mog Liang 2010年9月30日 10:58
    2010年9月23日 14:35

全部回复