zoukankan      html  css  js  c++  java
  • Creating popup windows in XBAP applications

    A colleague at DevelopMentor recently asked me about creating popup windows in XAML browser applications (XBAP). Normally this is not allowed – if you try to create a top-level window you will get a SecurityException because WPF asks forUIPermission which is strictly prohibited when hosted in the browser.

    It turns out, however, that you can get a popup window – there’s a hidden little gem in theSystem.Windows.Controls.Primitive namespace that is your friend: Popup.

    It’s the same underlying class that ToolTip, Menu, and ComboBox use to display drop-down menus and overlays and it is browser-hosting aware! It’s pretty limited in functionality – I’m not sure you can get it to move around with the mouse for example, but for simple cases it works great. Here’s a code snippet – wire this up to a button in an XBAP:
     

    void OnClick(object sender, EventArgs e)
    {
        Popup window = new Popup();
       
        StackPanel sp = new StackPanel { Margin = new Thickness(5) };
        sp.Children.Add(new TextBlock { Text = "Hi from a popup" });
        Button newButton = new Button { Content = "Another button" };
        newButton.Click += delegate { window.IsOpen = false; };
        sp.Children.Add(newButton);
        sp.Children.Add(new Slider { Minimum = 0, Maximum = 50, Value = 25, Width = 100 });
       
        window.Child = new Border { Background = Brushes.White, BorderBrush = Brushes.Black, 
                                         BorderThickness = new Thickness(2), Child = sp };
        window.PlacementTarget = this;
        window.Placement = PlacementMode.Center;
       
        window.IsOpen = true;
     }

    The key thing you need to do is set the PlacementTarget. That associates a “parent” window and without it, the Popup class asserts UIPermission which will fail in the browser environment.

  • 相关阅读:
    当教育成为一种商品
    怎样设置Solaris上网
    对象转为xml输出到页面,中文乱码问题
    Flex 深拷贝与浅拷贝笔记
    使用access数据库需要注意的问题
    根据数据库表结构生成xsd文件
    SendKeys.Send()输入中文
    VB6迁移到VB.NET的一些问题汇总
    技术文章转移完毕
    说说重复发明轮子的事儿
  • 原文地址:https://www.cnblogs.com/zjoch/p/5084725.html
Copyright © 2011-2022 走看看