询问者
SL ChildWindow的错误修正及功能扩充。

常规讨论
-
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