silverlight中如何方便在多个"场景"即Xaml文件之间随意切换?
时间:2022-04-23
本文章向大家介绍silverlight中如何方便在多个"场景"即Xaml文件之间随意切换?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
注:以下方法是百度上搜索得来的,整理一下转发于此
步骤1.先在silverlight项目中新建一个接口文件IContent.cs,内容如下(namespace请各位根据自己的实际情况修改):
Code
using System.Windows;
namespace BookStore
{
public interface IContent
{
UIElement Content { get; set; }
}
}
步骤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;
}
}
}
}
运行效果图如下:
欢迎转载,但请注明来自"菩提树下的杨过"
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 秒杀商品超卖事故:Redis分布式锁请慎用!
- 3D开发是一个生态,ThingJS支持js,css,json,html外部资源引用
- 手把手教你实现xxl-job分布式任务调度平台搭建
- 在 vscode 中 debugger 调试
- MongoDB 的安装
- 一次opencanary自定义实践
- 从0到1编写一个Xposed Module :Anti Screenshot
- Linux pwn入门学习到放弃
- 一款针对网站的网络侦察和信息收集工具
- Numpy核心语法和代码整理汇总!
- 发现内网存活主机的各种姿势
- SharedPreferences VS MMKV
- RabbitMQ 最常用的 3 大模式!
- 啥?HashMap 1.8 还有死循环?你逗我呢!
- 他写的东西,你们喜欢么?