打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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;
            }
        } 
    }
}

 

运行效果图如下:


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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Silverlight中多个Xaml之间的切换/调用/弹出/传参数问题小结
强大的DataGrid组件_自定义头模板(HeaderTemplate)
详解Silverlight Treeview的HierarchicalDataTempla...
DispatcherTimer与Dispatcher小小应用
Silverlight 实例教程 - Out of Browser的自定义应用
Windows Phone开发(1):为Window Phone开发第一个Silverlight应用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服