zoukankan      html  css  js  c++  java
  • silverlight中如何方便在多个"场景"即Xaml文件之间随意切换?

    注:以下方法是百度上搜索得来的,整理一下转发于此

    步骤1.先在silverlight项目中新建一个接口文件IContent.cs,内容如下(namespace请各位根据自己的实际情况修改):

    Code
    using System.Windows;

    namespace BookStore
    {
        
    public interface IContent
        {
            UIElement Content { 
    getset; }
        }
    }

    步骤2.建二个Xaml文件Test.xaml和Test2.Xaml

    Test.Xaml完整内容如下:

    Code
    <UserControl x:Class="BookStore.Test"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml" 
        Width
    ="600" Height="400">
        
    <Grid x:Name="LayoutRoot" Background="White" >
            
    <StackPanel Orientation="Vertical" HorizontalAlignment="Center" Margin="50" Background="AliceBlue" Width="200" Height="100">
                
    <TextBlock TextAlignment="Center">
                    这是Test.Xaml文件
                
    </TextBlock>
                
    <Button Height="25" Width="150" Content="转到Test2.xaml" Click="Button_Click"></Button>
            
    </StackPanel>
           
        
    </Grid>
    </UserControl>

    Test.Xaml.Cs完整内容如下:

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

    namespace BookStore
    {

        
    //手动增加, IContent ,让Test实现IContent接口
        public partial class Test : UserControl, IContent 
        {
            
    public Test()
            {
                InitializeComponent();
            }

            
    private void Button_Click(object sender, RoutedEventArgs e)
            {
                
    //实现切换(点击test.xaml上的按钮将切换到Test2"场景")
                (Application.Current.RootVisual as IContent).Content = new Test2();                       
            }


            
    /// <summary>
            
    /// 增加一个Content属性
            
    /// </summary>
            public new UIElement Content
            {
                
    get
                {
                    
    return base.Content;
                }
                
    set
                {
                    
    base.Content = value;
                }
            } 

        }
    }

    Test2.Xaml完整内容如下:

    Code
    <UserControl x:Class="BookStore.Test2"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml" 
        Width
    ="600" Height="400">
        
    <Grid x:Name="LayoutRoot" Background="White" >
            
    <StackPanel Orientation="Vertical" HorizontalAlignment="Center" Margin="50" Background="Beige"  Width="200" Height="100">
                
    <TextBlock TextAlignment="Center">
                    这是Test2.Xaml文件
                
    </TextBlock>
                
    <Button Height="25" Width="150" Content="转到Test.xaml" Click="Button_Click"></Button>
            
    </StackPanel>

        
    </Grid>
    </UserControl>

    Test2.Xaml.cs完整内容如下:(其实跟Test.Xaml.cs几乎一样)

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

    namespace BookStore
    {
        
    //手动增加, IContent ,让Test2实现IContent接口
        public partial class Test2 : UserControl, IContent
        {
            
    public Test2()
            {
                InitializeComponent();
            }

            
    private void Button_Click(object sender, RoutedEventArgs e)
            {
            
    //就这一行有点一不样(点击test2.xaml上的按钮将还回到Test"场景")
                (Application.Current.RootVisual as IContent).Content = new Test();            
            }

            
    /// <summary>
            
    /// 增加一个Content属性
            
    /// </summary>
            public new UIElement Content
            {
                
    get
                {
                    
    return base.Content;
                }
                
    set
                {
                    
    base.Content = value;
                }
            } 
        }
    }

    运行效果图如下:


    欢迎转载,但请注明来自"菩提树下的杨过"

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    一天一个设计模式(15)——中介者模式
    一天一个设计模式(14)——迭代器模式
    一天一个设计模式(13)——命令模式
    一天一个设计模式(12)——责任链模式
    一天一个设计模式(11)——代理模式
    《windows程序设计》学习_3.4:实现雷区翻转
    《windows程序设计》学习_3.3:利用xp扫雷资源
    《windows程序设计》学习_3.2:左键的使用
    《windows程序设计》学习_3.1:画出雷区,左键的使用
    《windows程序设计》学习_2.2:初识消息,双键的使用
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1385189.html
Copyright © 2011-2022 走看看