Silverlight 3 Beta发布了!其中,ChildWindow是一个令人激动的控件。使用ChildWindow,终于在应用程序里轻松地弹出对话框,而不用Popup。接下来我就在项目里添加一个登录的对话框:

在解决方案中添加一个ChildWindow:

ChildWindow

 

在Experssion Blend 3里打开LoginWindow,可以看到Silverlight已经为我们添加了一些项目:

ChildWindow按照美工图,把界面修改如下:

ChildWindow

 

接下来修改代码,我把弹出登录窗口放在Socket连接上服务器后:

protected void OnClientConnected(object sender, AsyncConnectionEventArgs e)
{
    Call((Action)Login);
}

Call函数把Dispatcher.BeginInvoke做了一个简单的封装,负责跨线程更新UI对象:

public void Call(Action action)
{
    Dispatcher.BeginInvoke(action);
}

真正的Login方法,向服务器发送用户输入的帐号和密码:

public void Login()
{
    LoginWindow lw = new LoginWindow();
    lw.Closed += (s2, e2) =>
    {
        if (lw.DialogResult == true)
        {
            XElement xe = new XElement("login",
                new XAttribute("name", lw.UserName),
                new XAttribute("password", lw.UserPassword));
            m_Client.Send(m_Encoding.GetBytes(xe.ToString(SaveOptions.None)));
        }
    };
    lw.Show();
}

以下是运行时的截图,很漂亮吧?!

ChildWindow

 

还可以通过设置模板,来修改对话框样式:

ChildWindow

 

400%下的效果图:

ChildWindow 

其实美工图是这样的:

ChildWindow 我们修改一下标题栏,让它看起来更像美工图:

ChildWindow

最终完成界面 :

ChildWindow

相关文章:

  • 2021-11-06
  • 2022-03-09
  • 2021-10-22
  • 2021-05-17
  • 2021-08-29
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-18
  • 2021-11-19
  • 2021-10-05
相关资源
相似解决方案