尽管Silverlight 5是一个功能强大的框架,它为开发人员提供了许多优秀的工具和特性,但在使用过程中,仍然发现了一些不尽如人意的地方。本文将讨论这些不足之处,并提出一些可能的改进建议。需要注意的是,这些观点仅代表个人看法,期待在未来的版本中看到这些问题得到解决。
在Silverlight 5中,发现没有提供创建窗口控制的模板。这意味着无法直接在XAML中创建窗口,也无法使用如Blend这样的设计工具来设计和使用窗口。目前,只能创建一个UserControl,并从代码后台动态地添加它。认为应该提供一个创建窗口的模板,并允许使用设计工具更改模板。
探索Window类时,注意到这个类是密封的(sealed),这意味着无法继承这个类来创建自定义的窗口控制。
尽管存在Close()方法,但对缺少Open()方法感到困惑。目前,只能使用Visibility属性来显示窗口。
public sealed class Window : DependencyObject
{
public Window();
public double Height { get; set; }
public double Width { get; set; }
public double Left { get; set; }
public double Top { get; set; }
public bool TopMost { get; set; }
public bool IsActive { get; }
public WindowState WindowState { get; [SecuritySafeCritical] set; }
public string Title { get; set; }
public FrameworkElement Content { get; set; }
public bool IsVisible { get; }
public Visibility Visibility { get; set; }
public WindowStyle WindowStyle { get; set; }
[SecuritySafeCritical]
public bool Activate();
public void Close();
[SecuritySafeCritical]
public void DragMove();
[SecuritySafeCritical]
public void DragResize(WindowResizeEdge resizeEdge);
public static Window GetWindow(DependencyObject dependencyObject);
public event EventHandler Closing;
}
还注意到,尽管尝试将TopMost属性设置为true,以使窗口保持在其他窗口之上,但遗憾的是,这个属性并没有起作用。
如Vikram在他的博客文章中提到的,如果窗口大小大于内容大小,那么未被内容覆盖的部分会显示为黑色背景。几天前讨论了这个问题。
在检查Window类时,注意到类中没有提到Background属性,因此无法设置窗口背景的颜色。