如何在一个母Silverlight的UI界面中弹出另外一个子SilverlightUI界面

举例来说:

母xaml文件里输入:

            <navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" 
                              Source="/Home" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed">
                <navigation:Frame.UriMapper>
                  <uriMapper:UriMapper>
                    <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
                    <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
                  </uriMapper:UriMapper>
                </navigation:Frame.UriMapper>
            </navigation:Frame>


 

那么当该Navigation导航框架遇到无法识别的URI地址时,会调用NavigationFailed事件所对应的方法在当前母页面上打开一个子界面

这里new ErrorWindow(e.Uri); 会调用ErrorWindow.xaml.cs文件里的构造函数重载

        // If an error occurs during navigation, show an error window
        private void ContentFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
        {
            e.Handled = true;
            ChildWindow errorWin = new ErrorWindow(e.Uri);
            errorWin.Show();
        }

打开子UI界面ErrorWindow.xaml: 这里是个SIlverlight Child Window类型

<controls:ChildWindow  
    x:Class="TestDemo.ErrorWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"    
    Title="Error">

    <Grid x:Name="LayoutRoot" Width="540">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <TextBlock x:Name="IntroductoryText" Grid.Row="0" Margin="0" 
               Text="An unknown error was encountered. Please contact your administrator for more information."/>

        <StackPanel x:Name="ContentStackPanel" Grid.Row="2" Margin="0,6,0,0">

            <TextBlock x:Name="LabelText" TextWrapping="Wrap" Margin="0,0,0,2" 
                       Text="Error details"/>
            <TextBox x:Name="ErrorTextBox" Height="90" TextWrapping="Wrap" IsReadOnly="True"
                     VerticalScrollBarVisibility="Auto"/>

        </StackPanel>

        <Button x:Name="OKButton" Grid.Row="3" Click="OKButton_Click" 
            Width="75" Height="23" HorizontalAlignment="Right" Margin="0,10,0,0" 
            TabIndex="0" Content="OK"/>

    </Grid>

</controls:ChildWindow>


子xaml.cs: 进行了构造函数重载

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

namespace TestDemo
{
    public partial class ErrorWindow : ChildWindow
    {
        public ErrorWindow(Exception e)
        {
            InitializeComponent();
            if (e != null)
            {
                ErrorTextBox.Text = e.Message + Environment.NewLine + Environment.NewLine + e.StackTrace;
            }
        }

        public ErrorWindow(Uri uri)
        {
            InitializeComponent();
            if (uri != null)
            {
                ErrorTextBox.Text = "Page not found: \"" + uri.ToString() + "\"";
            }
        }

        public ErrorWindow(string message, string details)
        {
            InitializeComponent();
            ErrorTextBox.Text = message + Environment.NewLine + Environment.NewLine + details;
        }

        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = true;
        }
    }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值