注:以下方法是百度上搜索得来的,整理一下转发于此 步骤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; } } } }
运行效果图如下:
|
|
来自: 姬风 > 《Silverlight点滴》