8,735
社区成员
发帖
与我相关
我的任务
分享
xaml
<UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="EasySL.UI.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sCtrl="clr-namespace:EasySL.Controls;assembly=EasySL.Controls"
xmlns:localControl="clr-namespace:EasySL.UI.Controls"
>
<Grid x:Name="LayoutRoot" Background="White">
<Grid Background="#dfe8f6">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Grid.ColumnSpan="2" Height="36">
<Image Source="Images/top_bg.png" Stretch="Fill"></Image>
<Image Source="Images/logo.png" Stretch="None" Opacity="0.7" HorizontalAlignment="Left" Margin="20,0,0,0"></Image>
</Grid>
<Grid Grid.ColumnSpan="2" Grid.Row="1" Height="26">
<Image Source="Images/topmenu_bg.png" Stretch="Fill"></Image>
<TextBlock x:Name="userInfo" Opacity="0.5" Margin="10,5,5,5"></TextBlock>
</Grid>
<Grid Grid.Row="2" Grid.Column="0" Margin="5">
<Border x:Name="leftPanel" Width="170" BorderBrush="#99bbe8" BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid Height="26" Grid.Row="0">
<Image Source="Images/leftTitle_bg.png" Stretch="Fill"></Image>
<TextBlock Margin="6">Menu Panel</TextBlock>
<Image x:Name="expand" Source="Images/leftShow_icon.png" Stretch="None" Margin="3" HorizontalAlignment="Right" Opacity="0"></Image>
<Image x:Name="collapse" Source="Images/leftHide_icon.png" Stretch="None" Margin="3" HorizontalAlignment="Right" Opacity="1" Cursor="Hand"></Image>
</Grid>
<Border Height="1" Grid.Row="1" Background="#99bbe8" />
<Grid Grid.Row="2" Background="White" x:Name="leftMenuPanel">
<localControl:Menu x:Name="menu"></localControl:Menu>
</Grid>
</Grid>
</Border>
</Grid>
<Grid Grid.Row="2" Grid.Column="1" Margin="5">
<Border x:Name="rightPanel" BorderBrush="#99bbe8" BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid Height="28">
<Image Source="Images/rightTitle_bg.png" Stretch="Fill"></Image>
<Border CornerRadius="3" Height="24" BorderBrush="#8db2e3" Margin="8,0,0,0" BorderThickness="1,1,1,0" HorizontalAlignment="Left">
<Border.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#ffffff" Offset="0"/>
<GradientStop Color="#deecfd" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<TextBlock Margin="3" VerticalAlignment="Top" x:Name="rightTitle">Operation Panel</TextBlock>
</Border>
</Grid>
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" BorderThickness="0">
<Grid x:Name="rightContent" />
</ScrollViewer>
</Grid>
</Border>
</Grid>
</Grid>
<localControl:Login x:Name="login"/>
</Grid>
<UserControl.Resources>
<Storyboard x:Name="hideMenu">
<DoubleAnimation Storyboard.TargetName="leftPanel" Storyboard.TargetProperty="Width" To="26" Duration="0:0:0.3"></DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="collapse" Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.1"></DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="expand" Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.5"></DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="leftMenuPanel" Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.2"></DoubleAnimation>
</Storyboard>
<Storyboard x:Name="showMenu">
<DoubleAnimation Storyboard.TargetName="leftPanel" Storyboard.TargetProperty="Width" To="170" Duration="0:0:0.3"></DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="collapse" Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.5"></DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="expand" Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.1"></DoubleAnimation>
<DoubleAnimation Storyboard.TargetName="leftMenuPanel" Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2"></DoubleAnimation>
</Storyboard>
</UserControl.Resources>
</UserControl>
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 EasySL.Core;
using EasySL.Entity;
using System.Reflection;
using EasySL.Controls;
using EasySL.UI.Controls;
namespace EasySL.UI
{
public partial class Page : UserControl
{
public Page()
{
InitializeComponent();
this.collapse.MouseLeftButtonUp += new MouseButtonEventHandler(collapse_MouseLeftButtonUp);
this.menu.OnClick += new MouseButtonEventHandler(menu_OnClick);
this.login.OnLoginSuccess += new LoginSuccess(login_OnLoginSuccess);
}
void login_OnLoginSuccess(string userName)
{
this.userInfo.Text = string.Format("Current User: {0}, Login Time: {1}", userName, DateTime.Now);
}
void collapse_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
FrameworkElement fe = sender as FrameworkElement;
if (fe.Opacity == 1)
{
this.hideMenu.Begin();
}
else
{
this.showMenu.Begin();
}
}
#region left menu action
//When click the left menu, it'll create a right panel by menuitem's tag and reflection
void menu_OnClick(object sender, MouseButtonEventArgs e)
{
TreeViewItem element = sender as TreeViewItem;
this.rightTitle.Text = element.Header.ToString();
if (element.Tag != null)
{
string panelName = element.Tag.ToString();
if (panelName == "None")
{
EasySL.Controls.Window.Alert("This function hasn't implemented");
return;
}
UserControl panel = this.FindName(string.Format("RightContent_{0}", panelName)) as UserControl;
if (panel == null)
{
panel = this.CreatePanel(panelName);
panel.Name = string.Format("RightContent_{0}", panelName);
this.rightContent.Children.Add(panel);
}
else
{
this.rightContent.Children.Remove(panel);
this.rightContent.Children.Add(panel);
}
}
}
private UserControl CreatePanel(string panelName)
{
if (panelName != string.Empty)
{
Assembly executingAssembly = Assembly.GetExecutingAssembly();
foreach (Type type in executingAssembly.GetTypes())
{
if (type.Name.EndsWith(panelName))
{
UserControl panel = Activator.CreateInstance(type) as UserControl;
return panel;
}
}
}
return null;
}
#endregion
}
}