65.9K
CodeProject 正在变化。 阅读更多。
Home

Silverlight 2 的 ViewStack 组件 – RIA 领域的必然控件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.89/5 (6投票s)

2008年10月18日

CPOL
viewsIcon

31912

downloadIcon

123

Silverlight 2 的 ViewStack 组件 – RIA 领域的必然控件

引言

我发现 Flex 中的 ViewStack 组件是在定义的的内容面板中切换视图的一个优雅的导航器。 不幸的是,我没有在 Silverlight 2 SDK 中找到任何类似的导航器。 因此,我考虑为我的项目 DShop(一个 Silverlight 2 技术演示器)开发一个简单的 ViewStack 组件。 我将通过添加更多功能来增强此控件,并希望得到您的宝贵意见。

什么是 ViewStack?

  • ViewStack 是一个导航器容器,包含堆叠在彼此之上的其他子容器。
  • 同一时间只能有一个子容器可见或处于活动状态。
  • 您可以创建自己的逻辑来管理活动视图。
  • SelectedIViewName 属性包含活动视图的逻辑名称。
  • 只需从模型更改 SelectedViewName 属性即可切换视图(ModelLocator.Instance.SelectedViewName = "Home")。

代码

Page.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using SilverlightApplication1.Control;
namespace SilverlightApplication1
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(Page_Loaded);
            
        }
        void Page_Loaded(object sender, RoutedEventArgs e)
        {
            this.DataContext = ModelLocator.Instance;
            ModelLocator.Instance.SelectedViewName = "Home";
            
        }
        private void Home_Click(object sender, RoutedEventArgs e)
        {
            ModelLocator.Instance.SelectedViewName = "Home";
        }
        private void AboutUS_Click(object sender, RoutedEventArgs e)
        {
            ModelLocator.Instance.SelectedViewName = "AboutUS";
        }
    }
}

Page.xaml

<UserControl x:Class="SilverlightApplication1.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:SilverlightApplication1.Control" >
    <Grid x:Name="LayoutRoot" Background="Wheat"  >
        <Grid.RowDefinitions>
            <RowDefinition Height="50" />
            <RowDefinition Height="20"/>
            <RowDefinition Height="*"/>
         </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="20"/>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Button x:Name="Home" Content="Home" Grid.Row="0" 
					Grid.Column="0" Click="Home_Click"/>
        <Button x:Name="AboutUS" Content="AboutUS" Grid.Row="0" 
					Grid.Column="2" Click="AboutUS_Click"/>
        
         <Grid Grid.Row="2" Grid.ColumnSpan="4" Grid.Column="0">
                <local:ViewStack x:Name="myViewStack"  
		    SelectedViewName="{Binding Path=SelectedViewName,Mode=TwoWay}" >
                    <local:ViewStack.Views>
                        <local:ViewInfo ViewName="Home" 
			ViewTypeName="SilverlightApplication1.HomeView"/>
                        <local:ViewInfo ViewName="AboutUS" 
			ViewTypeName="SilverlightApplication1.AboutUSView"/>
                    </local:ViewStack.Views>
                </local:ViewStack>
         </Grid>
    </Grid>
</UserControl>

viewstack.GIF

历史

  • 2008年10月18日:初始发布
© . All rights reserved.