一个做sl的朋友到处问Silverlight怎么实现类似于母版页这样的框架功能。
查了一下 Silverlight确实没有提供类似的功能……但是 开玩笑 攻城狮耶 这么点小东西非得提供了才能用吗?
以下是解决方案:
新建一个随便什么的用户控件 我的叫做ManageFrame
首先是后台.cs代码 木有神马麻烦的 把继承的类改成 ContentControl
public partial class ManageFrame : ContentControl
{
public ManageFrame()
{
InitializeComponent();
}
}
把继承类也改成
<ContentControl x:Class="IWorld.Admin.Controls.ManageFrame"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:IWorld.Admin.Controls;assembly=IWorld.Admin.Controls"
mc:Ignorable="d" MinWidth="1020">
</ContentControl>
然后写模版
<ContentControl.Template>
<ControlTemplate>
<!--主体框架-->
<Grid x:Name="root">
<Grid.Background>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="#FFF0F0F0" Offset="1"/>
<GradientStop Color="#FFF6F6F6"/>
</LinearGradientBrush>
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="220"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<!--以下是侧边栏-->
<local:SideTool SelectedText_Menu="{Binding SelectedText_Menu}"
SelectedText_Page="{Binding SelectedText_Page}"
Username="{Binding Username}"
Group="{Binding Group}"
JumpCommand="{Binding JumpCommand}"
EditAccountCommand="{Binding EditAccountCommand}"
LogoutCommand="{Binding LogoutCommand}"/>
<!--以上是侧边栏-->
<!--以下是界面框架-->
<Grid Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="75"></RowDefinition>
</Grid.RowDefinitions>
<!--界面内容将插插入在这里-->
<ContentControl Foreground="{TemplateBinding Property=Foreground}">
<ContentPresenter/>
</ContentControl>
<!--以下是页脚-->
<!--技术支持图标-->
<local:TechnicalSupport_Button Width="75" Height="75" Grid.Row="1"
HorizontalAlignment="Right" Margin="0,0,30,0"/>
<!--版权信息-->
<TextBlock Text="版权所有 盗版必究 © 2013" Margin="0,0,109,10" Grid.Row="1"
HorizontalAlignment="Right" VerticalAlignment="Bottom"
Foreground="{TemplateBinding Property=Foreground}"/>
<!--以上是页脚-->
</Grid>
<!--以上是界面框架-->
</Grid>
</ControlTemplate>
</ContentControl.Template>
注:侧边栏是自定义控件 可以无视 大家不用去思考local这个名称空间是哪里来的(可以无视它)
模版随便写 最重要的是 <ContentPresenter/>
把它放在你想要插入内容的地方 然后 就可以了
用起来 这样用:
<local:ManageFrame>
<Grid>
<TextBlock Text="Hrllo world"/>
</Grid>
</local:ManageFrame>
它使用时候唯一要注意的 也是唯一的缺点
它里面只能放一个子元素 理由不解释 请自行查阅相关资料 知道结果就可以了
不过这不影响使用 在所有你想弄的东西之外再套一个grid就可以了——麻烦那么一点点 不过 能用