精华内容
下载资源
问答
  • WPF炫丽界面模板,完整版的界面设计,涉及了多种控件的重写,界面有多种动画效果。该系统有三大板块:基础数据、业务管理和系统设置。使用VS2015开发工具开发。
  • wpf 3d界面编程源码

    热门讨论 2012-05-21 12:22:58
    使用wpf开发3d界面的例程,将你的桌面系统界面改为3d的,为你的程序增色不少。要求在VC#2010下运行。
  • 之前AddIN的交互界面都使用winform来做,除了丑点,最主要的就是界面拉伸的问题了,本来设计好的界面,如果window 10系统设置的字体大于100%,界面会拉伸的相当难看且不可预知。 如下述界面,确定、取消按钮被拉伸...

    之前AddIN的交互界面都使用winform来做,除了丑点,最主要的就是界面拉伸的问题了,本来设计好的界面,如果window 10系统设置的字体大于100%,界面会拉伸的相当难看且不可预知。

    如下述界面,确定、取消按钮被拉伸的几乎看不见了。

    查过很多资料,没看到合适的解决方式,有帖子介绍使用WPF。

    大体看了些WPF的资料,然后准备在AddIN项目里添加WPF界面。不过在ArcMap AddIN添加项目模板里,有的只是 用户控件(WPF)

    添加后的效果大体如下:

    设计器里是一个不可见的界面,大体是用户控件了,具体怎么用的没有接触过。而且该界面设置完成后,也没法调用弹出。

    不知道为什么ArcMap AddIN WPF模板中没有WPF Form窗体 。后来经过测试,通过如下途径绕过:

    (1)修改XAML文件,将UserControl修改为Window,大体效果如下

     

    (2)在窗体的后台文件中,将窗体继承的父类 UserControl修改为Window

    通过上述两步操作,即可实现在ArcMap AddIN中使用WPF窗体作为交互界面

    展开全文
  • WPF遍历界面控件

    千次阅读 热门讨论 2015-07-31 23:54:35
    需求是这样的,系统要监测风,雨,雪多个自然灾害。在界面上有这些灾害突发的报警框。本来报警框的背景是由于级别不同显示不同的颜色,但是现在发现,当报警背景为蓝色是,黑色字体 看不出来。又由于技术文档上规定...

    需求是这样的,系统要监测风,雨,雪多个自然灾害。在界面上有这些灾害突发的报警框。本来报警框的背景是由于级别不同显示不同的颜色,但是现在发现,当报警背景为蓝色是,黑色字体 看不出来。又由于技术文档上规定背景颜色了,所以现在只能改变所有lbl的字体。而这些控件都是WPF自定义控件的一些 元素。

    要实现这个功能,有很多种方式。WPF的好处 就是既可以像Html+CSS 去设置, 也可以像Winform一样去更改。重点说一下解决方式。


    这个功能要调用的有大概10多处,每个窗体有6个左右lbl,所以每次给每个控件挨个赋值是绝对不能用的。

    先看一下样式和自定义控件代码。

    样式:

    <span style="font-family:KaiTi_GB2312;">    <UserControl x:Class="ICT.RCS.Modules.SingleLine.Facilities.UserControlFile.ucSnowAlert"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="150" d:DesignWidth="340" BorderThickness="1" BorderBrush="#AAAAAA">
    
        <Grid x:Name="grdSnowAlert" Height="150">
            <Grid.Resources >
                <Style TargetType="Label" >
                    <Setter  Property="FontSize" Value="12"/>
                    <Setter Property="Foreground"  Value="{Binding FontColorBrush,UpdateSourceTrigger=PropertyChanged}"/>
                    <Setter Property="Background"  Value="{Binding FontColorBrush,UpdateSourceTrigger=PropertyChanged}"/>
                    <Setter Property="HorizontalAlignment" Value="Left" />
                    <Setter Property="VerticalAlignment" Value="Center"></Setter>
                    <Setter Property="FontFamily" Value="Microsoft YaHei"/>
                </Style>
            </Grid.Resources>
            <Grid.RowDefinitions>
                <RowDefinition Height=" 30" ></RowDefinition>
                <RowDefinition Height=" 30" ></RowDefinition>
                <RowDefinition Height=" 30" ></RowDefinition>
                <RowDefinition Height=" 30"></RowDefinition>
                <RowDefinition Height=" 30"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60*"></ColumnDefinition>
                <ColumnDefinition Width="100*"></ColumnDefinition>
                <ColumnDefinition Width="60*"></ColumnDefinition>
                <ColumnDefinition Width="120*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Label Content="雪  深  报  警" Width="322" HorizontalAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="4" Margin="0,4,0,0"  HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Height="27"/>
            <Border Grid.Column="0" BorderThickness="0,1,1,1" BorderBrush="#AEAEAE" Grid.Row="1" >
                <Label Content="监测点" HorizontalAlignment="Center" Margin="5,-2,5,2"/>
            </Border>
            <Border Grid.Row=" 1" Grid.Column=" 2" BorderBrush="#AEAEAE" BorderThickness="1">
                <Label Content="报警时间" HorizontalAlignment="Center" />
            </Border>
            <Border  Grid.Row=" 2" Grid.Column="0"  BorderBrush="#AEAEAE" BorderThickness="0,0,1,1">
                <Label Content="影响区间" HorizontalAlignment="Center" />
            </Border>
            <Border Grid.Row=" 3" Grid.Column=" 0" BorderBrush="#AEAEAE" BorderThickness ="0,0,1,1">
                <Label Content="限速区段" HorizontalAlignment="Center" Margin="0,-1,0,1"/>
            </Border>
            <Border Grid.Column="1" BorderBrush="#AEAEAE" BorderThickness ="0,1,0,1"  Grid.Row="1">
                <Label x:Name="lblSnowCheckPoint" Content=""   Margin="0,0,-1,0" Width="100"  />
            </Border>
            <Border Grid.Row="1" Grid.Column=" 3" BorderBrush="#AEAEAE" BorderThickness ="0,1,0,1">
                <Label x:Name="lblSnowAlarmTime" Content=""  Margin="0,-1,0,1"/>
            </Border>
            <Border Grid.Row=" 2" Grid.Column=" 1" Grid.ColumnSpan=" 3" BorderBrush="#AEAEAE" BorderThickness ="0,0,0,1">
                <Label x:Name="lblSnowEffectArea" Content=""   />
            </Border>
            <Border Grid.Row=" 3" Grid.Column=" 1"  BorderBrush="#AEAEAE" BorderThickness ="0,0,0,1">
                <Label x:Name="lblSnowLockArea" Content=""  />
            </Border>
            <Border Grid.Row=" 3" Grid.Column=" 2" BorderBrush="#AEAEAE" BorderThickness="1,0,1,1">
                <Label Content="处置措施" HorizontalAlignment="Center" Foreground="Black"/>
            </Border>
            <Border Grid.Row="3" Grid.Column=" 3" BorderBrush="#AEAEAE" BorderThickness ="0,0,0,1">
                <Label x:Name="lblSnowCommand" Content=""  />
            </Border>
            <Button x:Name="btnAlert"  Grid.ColumnSpan="4"  Content="报 警 确 认" Grid.Column="0" HorizontalAlignment="Center" Height="20" Grid.Row="4" VerticalAlignment="Center" Width="75" Margin="0" Click="Button_Click" IsEnabled="False"/>
            
        </Grid>
    
    </UserControl>
    </span>

    现在界面是这样的。


    解决方案:

    我采用的通过判断控件的属性来赋值。这和vb是相通的,只不过需要属性一下 几个控件都有哪些属性。谁有什么节点等。

    <span style="font-family:KaiTi_GB2312;">using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    
    namespace ChildDemo
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : UserControl
        {
            private SolidColorBrush sBush = new SolidColorBrush();
            public MainWindow()
            {
                InitializeComponent();
                this.ChangeLblColor(this.grdRainAlert.Children, 2);
    
            }
    
    
            #region 根据警报状态更改报警框中字体颜色--2015-7-31
            /// <summary>
            /// 根据警报状态更改报警框中字体颜色
            /// </summary>
            /// <param name="uiControls">Gride(报警框)的子节点</param>
            /// <param name="alermStatus">报警状态</param>
            public void ChangeLblColor(UIElementCollection uiControls, int alermStatus)
            {
    
                if (uiControls != null)
    
                    //遍历每个级别的控件,当控件类型为lbl 并且状态为2时,改变字体颜色为白。  
                    foreach (UIElement element in uiControls)
                    {
                        if (element is Label)
                            switch (alermStatus)
                            {
                                case 2:
                                    (element as Label).Foreground = new SolidColorBrush(Colors.White);
                                    break;
                                default:
                                    (element as Label).Foreground = new SolidColorBrush(Colors.Black);
                                    break;
                            }
                        else if (element is Border && (element as Border).Child is Label) //如果该控件为border,border的子节点是lbl
                        {
                            Label lbl = (Label)(element as Border).Child;
                            switch (alermStatus)
                            {
                                case 2:
                                    lbl.Foreground = new SolidColorBrush(Colors.White);
                                    break;
                                default:
                                    lbl.Foreground = new SolidColorBrush(Colors.Black);
                                    break;
                            }
                        }
                    }
                return;
            } 
            #endregion
    
          
        }
    }
    </span>

    以上是一种应用。这个方法如果针对其他情况还不是很好用,其实还可以抽象出一个万能方法。

    正好总结的时候浏览到 一篇这样的博客。觉得总结的很详细。 拿出来分享一下~

    ------------------------------------------------------------------------------以下为摘抄---------------------------------------------------

     

    c#winform中遍历控件,界面具有Controls属性,可以直接进行遍历访问:

    <span style="font-family:KaiTi_GB2312;">在百度上看到很多人采用:
    
          foreach (UIElement element in this.Control.Children) 
         {
             if (element is UserControl)
               {
                     UserControl current = ((UserControl)element);
                } 
         }</span>

    但是,通过使用,可以发现其中的问题:

       不是每一个Control都具有Children属性,如果遍历对象是GridStackPanl那么是可以实现,但只能遍历当前Grid的子控件,对当前控件的子控件中的子控件则无法实现遍历,如

    <span style="font-family:KaiTi_GB2312;"><grid name ="Parent">
          <grid name ="son"/>
          <grid name ="son2">
             <grid name = "son3"/>
          </grid>
       </grid>
    </span>

    则只能遍历到son和son2,对son3束手无策,递归是吧? 在这个小例子中,递归ok,但若是下面的呢?

    <span style="font-family:KaiTi_GB2312;"> <grid name ="Parent">
             <grid name ="son"/>
             <grid name ="son2">
            <StackPanl name = "panl"/>
               <grid name ="son3"/>
            </StackPanl >
    
      </grid></span>

    StackPanl不具有children属性,因此你无法对其进行遍历。

     

    但是问题仍然可以进行解决:

            重点来了:


    <span style="font-family:KaiTi_GB2312;"> /// <summary>
            /// 功 能:遍历界面所有TextBox,设置IsEnable属性为False
            /// 作 者:Liu Hao | 日期:2012年5月30日
            /// </summary>
            /// <param name="uiControls"></param>
            private void SetNotEditable(UIElementCollection uiControls)
            {
                foreach (UIElement element in uiControls)
                {
                    if (element is TextBox)
                    {
                        (element as TextBox).IsEnabled = false;
                    }
                    else if (element is Grid)
                    {
                        this.SetNotEditable((element as Grid).Children);
                    }
                    else if (element is Expander)
                    {
                       //此代码仅供参考
                       //在您的布局中,Expander或者其他不具有Children属性的控件的Content,若不是StackPanl或Grid,而是其他的子控件,则需要更多的判断
                        
                        if ((element as Expander).Content is StackPanel)
                        {
                            StackPanel sa = (element as Expander).Content as StackPanel;
                            this.SetNotEditable(sa.Children);
                        }
                        else if ((element as Expander).Content is Grid)
                        {
                            Grid  sa = (element as Expander).Content as Grid;
                            this.SetNotEditable(sa.Children);
                        }
                    }
                    else if (element is StackPanel)
                    {
                        this.SetNotEditable((element as StackPanel).Children);
                    }
                    else if (element is ScrollViewer)
                    {
                        StackPanel sp = (element as ScrollViewer).Content as StackPanel;
                        this.SetNotEditable(sp.Children);
                         //ScrollViewer不具有Children属性,无法对其进行遍历,但是具有Content属性,作为容器型控件,一般都可以通过这样的方法来解决。
                    }
                }
            }
     
          //在事件中进行调用
          private void btnQuery_Click(object sender, RoutedEventArgs e)
            {
                this.SetNotEditable(this.gridUCContent.Children); //gridUCContent为最顶层Grid
            }
    
    </span>


    此代码及讲解仅作为参考,代码主要针对上面我自己的Xaml中的布局。不能直接粘贴引用,但可以提供思路。

    -------------------------------------------------------------------------------------------

        这是一种类似Winform的实现方式,最近在研究WPF的画刷和绑定,目测通过这种方式也能实现。  最初自己以为WPF就是简单的拖拽控件,现在发现如果只会简单的拖拽控件,是连一个最基本的简单的小系统都无法完成。它相当于既有Winform的拖拽性质,也有BS的网页制作的性质。而且界面能做出很炫很精确的效果,目前还在 研究。当然也有一个弊端就是WPF只有界面和后台两个进程,导致现在由于前台处理的数据比较多,界面也用到大量的委托 比较慢,目前还不知有有什么解决的办法,都在研究中。


        知识的相通性体会很深~

     

    展开全文
  • 本博文为WPF编写的 管理系统登录界面,及几个管理系统界面设计 先上图看一下效果 主界面: 图一:登录界面 图片二.登录数据准备中 现在开始上源码: 登录界面前台源码: <Window x:Class=...

        本博文为WPF编写的 管理系统登录界面,及几个管理系统主界面设计   先上图看一下效果

     

    主界面:

      图一:登录界面    

     

     

    图片二.登录数据准备中

    现在开始上源码:

    登录界面前台源码:

    <Window x:Class="WPFLoginDemo.LoginWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="登录" Height="300" Width="400" 
            WindowStartupLocation="CenterScreen"
            WindowStyle="None"
            FocusManager.FocusedElement="{Binding ElementName=txt_userName}"
            Loaded="Window_Loaded">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="80"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="40"/>
            </Grid.ColumnDefinitions>
            <Grid.Background>
                <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                    <GradientStop Color="#5aacf6" Offset="0.0"/>
                    <GradientStop Color="#0056f1" Offset="0.2"/>
                    <GradientStop Color="#13ceff" Offset="0.4"/>
                    <GradientStop Color="#006bff" Offset="0.6"/>
                    <GradientStop Color="#19d5ff" Offset="0.8"/>
                    <GradientStop Color="#5aacf6" Offset="1.0"/>
                </LinearGradientBrush>
            </Grid.Background>
            <TextBlock Grid.Row="2" Grid.ColumnSpan="3" 
                       Text="XXX管理系统V1.1.001版" TextAlignment="Center" 
                       VerticalAlignment="Center" FontSize="22"></TextBlock>
            <TextBlock Grid.Row="3" TextAlignment="Right"  VerticalAlignment="Center"
                       Text="用户名:"/>
            <TextBox Grid.Row="3" Grid.Column="1" Height="27" Margin="5 0 5 0" 
                     Name="txt_userName"/>
            <TextBlock Grid.Row="4" TextAlignment="Right" VerticalAlignment="Center"
                       Text="密  码:"/>
            <PasswordBox Grid.Row="4" Grid.Column="1" Height="27" Margin="5 0 5 0"
                         Name="txt_Pwd"/>
            <StackPanel Grid.Row="5" Grid.Column="1" Orientation="Horizontal">
                <Button Content="登录" Width="70" Margin="30 0 0 0" Height="35"
                        Name="btn_login" Click="btn_login_Click" Foreground="White" FontSize="18" Background="Transparent"/>
                <Button Content="退出" Width="70" Margin="40 0 0 0" Height="35"
                        Name="btn_exit" Click="btn_exit_Click" Background="Transparent" Foreground="White" FontSize="18"/>
            </StackPanel>
        </Grid>
    </Window>

    后台源码

      private void btn_login_Click(object sender, RoutedEventArgs e)
            {
                Splasher.Show(typeof(frmSplash));
                MainWindow mainWindow = new MainWindow();
                this.Close();
                mainWindow.Show();
            }
            private void btn_exit_Click(object sender, RoutedEventArgs e)
            {
                this.Close();
                Environment.Exit(0);
            }

    这里顺便说一下。在登录到主界面时,一般程序都要加载一些配置数据信息,这个一般般比较耗时,为了提高更好的用户体验 我们加载了一个加载提示窗口
    此提示窗口是修改别人。

    第一步:创建一个提示窗口(如图二)(本窗口为Winform窗口),本窗口本打算改为WPF的可是,改了之后发现无法运行,如果谁修改好了 请把源码贴出来学习一下

    窗口后台源码:

    public partial class frmSplash : Form,ISplashForm
        {
            public frmSplash()
            {
                InitializeComponent();
            }
    
            #region ISplashForm
    
            void ISplashForm.SetStatusInfo(string NewStatusInfo)
            {
                lbStatusInfo.Text = NewStatusInfo;
            }
    
            #endregion
        }

    用到的 接口文件:ISplashForm.cs

      public interface ISplashForm
        {
            void SetStatusInfo(string NewStatusInfo);
        }

    实现辅助类:Splasher.cs

      public class Splasher
        {
            private static Form m_SplashForm = null;
            private static ISplashForm m_SplashInterface = null;
            private static Thread m_SplashThread = null;
            private static string m_TempStatus = string.Empty;
    
            /// <summary>
            /// Show the SplashForm
            /// </summary>
            public static void Show(Type splashFormType)
            {
                if (m_SplashThread != null)
                    return;
                if (splashFormType == null)
                {
                    throw (new Exception("splashFormType is null"));
                }
    
                m_SplashThread = new Thread(new ThreadStart(delegate()
                {
                    CreateInstance(splashFormType);
                    Application.Run(m_SplashForm);
                }));
    
                m_SplashThread.IsBackground = true;
                m_SplashThread.SetApartmentState(ApartmentState.STA);
                m_SplashThread.Start();
            }
    
    
    
            /// <summary>
            /// set the loading Status
            /// </summary>
            public static string Status
            {
                set
                {
                    if (m_SplashInterface == null || m_SplashForm == null)
                    {
                        m_TempStatus = value;
                        return;
                    }
                    m_SplashForm.Invoke(
                            new SplashStatusChangedHandle(delegate(string str) { m_SplashInterface.SetStatusInfo(str); }),
                            new object[] { value }
                        );
                }
    
            }
    
            /// <summary>
            /// Colse the SplashForm
            /// </summary>
            public static void Close()
            {
                if (m_SplashThread == null || m_SplashForm == null) return;
    
                try
                {
                    m_SplashForm.Invoke(new MethodInvoker(m_SplashForm.Close));
                }
                catch (Exception)
                {
                }
                m_SplashThread = null;
                m_SplashForm = null;
            }
    
            private static void CreateInstance(Type FormType)
            {
    
                object obj = FormType.InvokeMember(null,
                                    BindingFlags.DeclaredOnly |
                                    BindingFlags.Public | BindingFlags.NonPublic |
                                    BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null);
                m_SplashForm = obj as Form;
                m_SplashInterface = obj as ISplashForm;
                if (m_SplashForm == null)
                {
                    throw (new Exception("Splash Screen must inherit from System.Windows.Forms.Form"));
                }
                if (m_SplashInterface == null)
                {
                    throw (new Exception("must implement interface ISplashForm"));
                }
    
                if (!string.IsNullOrEmpty(m_TempStatus))
                    m_SplashInterface.SetStatusInfo(m_TempStatus);
            }
    
    
            private delegate void SplashStatusChangedHandle(string NewStatusInfo);
    
        }

    主界面加载耗时的数据

     public MainWindow()
            {
                InitializeComponent();
    
                //登录是使用
                Splasher.Status = "正在准备数据......";
                System.Threading.Thread.Sleep(1000);
    
                Splasher.Status = "正在添加组件......";
                //此处省略部分加载耗时的代码
    
                Splasher.Status = "正在获取数据库数据......";
                System.Threading.Thread.Sleep(1000);
                Splasher.Status = "初始化完毕";
                System.Threading.Thread.Sleep(300);
    
                Splasher.Close();
            }

    主界面布局出来前台源码

    <Window xmlns:my="clr-namespace:WPFLoginDemo.CustomerControl"  x:Class="WPFLoginDemo.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            WindowStartupLocation="CenterScreen"
            Width="1024" Height="768"
            Title="XXX管理系统V1.1.001版" Loaded="Window_Loaded" SizeChanged="Window_SizeChanged">
        <Window.Resources>
            <!--Separator控件模块样式-->
            <Style x:Key="CorrectSeparatorStyle" TargetType="{x:Type Separator}">
                <Setter Property="Background">
                    <Setter.Value>
                        <RadialGradientBrush>
                            <GradientStop Color="#ffffff" Offset="0"/>
                            <GradientStop Color="#ffffff" Offset="0.2"/>
                            <GradientStop Color="#ffffff" Offset="0.3"/>
                            <GradientStop Color="#ffffff" Offset="0.4"/>
                            <GradientStop Color="#0067c9" Offset="1"/>
                        </RadialGradientBrush>
                    </Setter.Value>
                </Setter>
                <Setter Property="Margin" Value="0,2,0,2"/>
                <Setter Property="Focusable" Value="false"/>
                <Setter Property="Height" Value="1"/>
                <Setter Property="SnapsToDevicePixels" Value="True"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Separator}">
                           <Border Background="{TemplateBinding Background}">
                            <Line Stretch="Fill" X2="1" Stroke="{TemplateBinding Background}" StrokeThickness="{TemplateBinding Height}"
                                  StrokeStartLineCap="Square" StrokeEndLineCap="Square"/>
                            </Border>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
            <!--Button控件模块样式-->
            <Style x:Key="buttonStyle" TargetType="{x:Type Button}">
                <Setter Property="Foreground" Value="Black"/>
                <Setter Property="Background" Value="Transparent"/>
                <Setter Property="Height" Value="43"/>
                <Setter Property="FontSize" Value="20"/>
                <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
                <!--修改模板属性-->
                <Setter Property="Template">
                    <Setter.Value>
                        <!--控件模板-->
                        <ControlTemplate TargetType="{x:Type Button}">
                            <Border x:Name="fore" BorderThickness="0" CornerRadius="3" BorderBrush="#5555" Background="{TemplateBinding Background}">
                                <ContentPresenter x:Name="content" HorizontalAlignment="Center" VerticalAlignment="Center" 
                                                  Content="{TemplateBinding  Content}">
                                    <ContentPresenter.BitmapEffect>
                                        <DropShadowBitmapEffect Color="#000" Direction="-90" ShadowDepth="2" Softness="0.1" Opacity="0.3"/>
                                    </ContentPresenter.BitmapEffect>
                                </ContentPresenter>
                            </Border>
                            <ControlTemplate.Triggers>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Window.Resources>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition  Width="150"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="10"/>
            </Grid.ColumnDefinitions>
            <!--菜单栏-->
            <Menu Grid.ColumnSpan="3">
                <MenuItem Header="【基础资料】"/>
                <MenuItem Header="【客户维修】"/>
                <MenuItem Header="【销售管理】"/>
                <MenuItem Header="【报表查询】"/>
                <MenuItem Header="【用户管理】"/>
                <MenuItem Header="【系统设置】"/>
                <MenuItem Header="【帮助】"/>
            </Menu>
            <!--logo图片 Heard 头部-->
            <TextBlock Text="XXX管理系统" Grid.Row="1" Grid.ColumnSpan="3" TextAlignment="Center" 
                       Foreground="#ffffff" Padding="0 8 0 0" FontSize="30" FontWeight="Bold" HorizontalAlignment="Stretch">
                <TextBlock.Background>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                        <GradientStop Color="#5aacf6" Offset="0.0"/>
                         <GradientStop Color="#0056f1" Offset="0.2"/>
                         <GradientStop Color="#13ceff" Offset="0.4"/>
                         <GradientStop Color="#006bff" Offset="0.6"/>
                         <GradientStop Color="#19d5ff" Offset="0.8"/>
                         <GradientStop Color="#5aacf6" Offset="1.0"/>
                    </LinearGradientBrush>
                </TextBlock.Background>
            </TextBlock>
            <!--分割线-->
            <StackPanel Grid.Row="2" Grid.ColumnSpan="3">
                <Separator Style="{StaticResource ResourceKey=CorrectSeparatorStyle}" Height="5" Background="#c0c0c0">
                </Separator>
            </StackPanel>
            <!--主操作区域-->
            <Grid Grid.Row="3" Grid.ColumnSpan="3">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="170"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <!--左侧菜单栏-->
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="40"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <TextBlock Text="主菜单栏" Padding="0 7 0 0" TextAlignment="Center" FontSize="20" Foreground="#fafafa" FontWeight="Bold" Height="40">
                            <TextBlock.Background>
                                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                    <GradientStop Color="#f9f9f9" Offset="0"/>
                                    <GradientStop Color="#ababab" Offset="0.3"/>
                                    <GradientStop Color="#b4b4b4" Offset="0.5"/>
                                    <GradientStop Color="#d2d2d2" Offset="0.75"/>
                                    <GradientStop Color="#dedee0" Offset="1"/>
                                </LinearGradientBrush>
                            </TextBlock.Background>
                     </TextBlock>
                    <StackPanel Name="stackPanel1" Orientation="Vertical" Grid.Row="1" ButtonBase.Click="btn_customer_Click">
                        <StackPanel.Background>
                            <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                                <GradientStop Color="#005fc3" Offset="0"/>
                                <GradientStop Color="#0c70e5" Offset="0.5"/>
                                <GradientStop Color="#008ae5" Offset="1"/>
                            </LinearGradientBrush>
                        </StackPanel.Background>
                        <!--客户维修-->
                        <Button Name="btn_Repair" Content="客户维修" Style="{StaticResource ResourceKey=buttonStyle}" Click="btn_Repair_Click"></Button>
                        <Separator Height="4" Style="{StaticResource ResourceKey=CorrectSeparatorStyle}"></Separator>
                        <!--销售管理-->
                        <Button Content="销售管理" Style="{StaticResource ResourceKey=buttonStyle}"></Button>
                        <Separator Height="4" Style="{StaticResource ResourceKey=CorrectSeparatorStyle}"></Separator>
                        <!--报表查询-->
                        <Button Content="报表查询" Style="{StaticResource ResourceKey=buttonStyle}"></Button>
                        <Separator Height="4" Style="{StaticResource ResourceKey=CorrectSeparatorStyle}"></Separator>
                        <!--基础资料-->
                        <Button Content="基础资料" Style="{StaticResource ResourceKey=buttonStyle}"></Button>
                        <Separator Height="4" Style="{StaticResource ResourceKey=CorrectSeparatorStyle}"></Separator>
                        <!--发货处理-->
                        <Button Content="发货处理" Style="{StaticResource ResourceKey=buttonStyle}"></Button>
                        <Separator Height="4" Style="{StaticResource ResourceKey=CorrectSeparatorStyle}"></Separator>
                        <!--用户管理-->
                        <Button Content="用户管理" Style="{StaticResource ResourceKey=buttonStyle}"></Button>
                        <Separator Height="4" Style="{StaticResource ResourceKey=CorrectSeparatorStyle}"></Separator>
                        <!--系统设置-->
                        <Button Content="系统设置" Style="{StaticResource ResourceKey=buttonStyle}"></Button>
                    </StackPanel>
                </Grid>
                <!--右侧功能处理-->
                <StackPanel Name="stackPanelRight" Grid.Column="1">
                    <StackPanel.Background>
                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                            <GradientStop Color="#f3fbfa" Offset="0.0"/>
                            <GradientStop Color="#eef9fa" Offset="0.2"/>
                            <GradientStop Color="#c5e2f5" Offset="0.4"/>
                            <GradientStop Color="#91d3f5" Offset="0.6"/>
                            <GradientStop Color="#8ed4f6" Offset="0.8"/>
                            <GradientStop Color="#7ed0f6" Offset="1.0"/>
                        </LinearGradientBrush>
                    </StackPanel.Background>
                </StackPanel>
            </Grid>
            <!--状态栏-->
            <StatusBar Grid.Row="4" Grid.ColumnSpan="3" VerticalAlignment="Center" Background="Beige">
                <StatusBarItem Content="数据帐套:正式帐套"/>
                <StatusBarItem Content="岗位名称:仓库管理员" Margin="25 0 0 0"/>
                <StatusBarItem Content="登录用户名:系统管理员" Margin="25 0 0 0"/>
                <StatusBarItem Content="登录时间:2013年11月20日 13:54:08 星期一" Margin="25 0 0 0"/>
            </StatusBar>
        </Grid>
    </Window>

    后台源码出来

    public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
    
                //登录是使用
                Splasher.Status = "正在准备数据......";
                System.Threading.Thread.Sleep(1000);
    
                Splasher.Status = "正在添加组件......";
                //此处省略部分加载耗时的代码
    
                Splasher.Status = "正在获取数据库数据......";
                System.Threading.Thread.Sleep(1000);
                Splasher.Status = "初始化完毕";
                System.Threading.Thread.Sleep(300);
    
                Splasher.Close();
            }
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                btn_Repair_Click(null, null);
            }
            /// <summary>
            /// 获取渐变效果
            /// </summary>
            /// <returns></returns>
            private LinearGradientBrush GetLinearGradientBrush() 
            {
                LinearGradientBrush linearGradient = new LinearGradientBrush();
                linearGradient.StartPoint = new System.Windows.Point(0, 0.5);
                linearGradient.EndPoint = new System.Windows.Point(1, 0.5);
                linearGradient.GradientStops.Add(new GradientStop((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#0057bf"), 0.0));
                linearGradient.GradientStops.Add(new GradientStop((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#4b8acf"), 0.1));
                linearGradient.GradientStops.Add(new GradientStop((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#e2ecf6"), 0.3));
                linearGradient.GradientStops.Add(new GradientStop((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#ffffff"), 0.5));
                linearGradient.GradientStops.Add(new GradientStop((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#e2ecf6"), 0.8));
                linearGradient.GradientStops.Add(new GradientStop((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#4b8acf"), 0.1));
                linearGradient.GradientStops.Add(new GradientStop((System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#0057bf"), 1.0));
                return linearGradient;
            }
            private void SetButtonDefaultBackgroud() 
            {
                LogicTree(stackPanel1);
            }
            private void LogicTree(object obj)
            {
                if (!(obj is DependencyObject))
                {
                    return;
                }
                foreach (object child in LogicalTreeHelper.GetChildren(obj as DependencyObject))
                {
                    if (child is Button)
                    {
                        Button btn = (Button)child;
                        btn.Background = System.Windows.Media.Brushes.Transparent;
                    }
                    LogicTree(child);
                }
            }
            private double originalHeight = 0.0;
            private void btn_customer_Click(object sender, RoutedEventArgs e)
            {
                originalHeight = stackPanelRight.ActualHeight;
    
                SetButtonDefaultBackgroud();
                Button btn = e.OriginalSource as Button;
                btn.Background = GetLinearGradientBrush();
                UserControl userControl = null;
                stackPanelRight.Children.Clear();
                if (btn.Content.ToString().Equals("客户维修"))
                {
                    userControl = new CustomerRepairUserControl();   
                }  
                stackPanelRight.Children.Add(userControl);
            }
    
            //主界面窗口大小的变化
            private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
            {
                if (this.WindowState == WindowState.Maximized)
                {
                    CustomerData.AddHeight = (stackPanelRight.ActualHeight - originalHeight) / 3 + 35.0;
                }
                else
                {
                    CustomerData.AddHeight = 35.0;
                }
    
            }
    
            private void btn_Repair_Click(object sender, RoutedEventArgs e)
            {
                originalHeight = stackPanelRight.ActualHeight;
    
                SetButtonDefaultBackgroud();
                Button btn = btn_Repair;
                btn.Background = GetLinearGradientBrush();
                UserControl userControl = null;
                stackPanelRight.Children.Clear();
                if (btn.Content.ToString().Equals("客户维修"))
                {
                    userControl = new CustomerRepairUserControl();
                }
                stackPanelRight.Children.Add(userControl);
            }

    右侧流程功能处理 为一个布局好UserControl 控件  CustomerRepairUserControl.xaml
    UserControl控件布局 图片:

    <UserControl x:Class="WPFLoginDemo.CustomerControl.CustomerRepairUserControl"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 xmlns:shape="clr-namespace:WPFLoginDemo.CustomerControl"
                d:DesignHeight="600" d:DesignWidth="850" SizeChanged="UserControl_SizeChanged">
        <UserControl.Resources>
            <Style TargetType="{x:Type Button}">
                <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
                <Setter Property="Background">
                    <Setter.Value>
                        <LinearGradientBrush StartPoint="0,1" EndPoint="1,1">
                            <GradientStop Color="#c7daea" Offset="0.0"/>
                            <GradientStop Color="#cadcf0" Offset="0.4"/>
                            <GradientStop Color="#d6e9ff" Offset="0.7"/>
                            <GradientStop Color="#eef6ff" Offset="1.0"/>
                        </LinearGradientBrush>
                    </Setter.Value>
                </Setter>
            </Style>
        </UserControl.Resources>
        <Grid Name="grid1">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="60"/>
                <RowDefinition Height="40"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="100"/>
                <ColumnDefinition Width="150"/>
                <ColumnDefinition Width="100"/>
                <ColumnDefinition Width="150"/>
                <ColumnDefinition Width="100"/>
                <ColumnDefinition Width="100"/>
                <ColumnDefinition Width="2*"/>
            </Grid.ColumnDefinitions>
            <!--内容填充-->
            <!--客户送修登记-->
            <TextBlock Name="txtB_row" Grid.ColumnSpan="8" Text=""></TextBlock>
            <Button Grid.Column="3" Grid.Row="1" Content="送修登记新增"/>
            <StackPanel Grid.Column="3" Grid.Row="2" Orientation="Vertical">
                <shape:Arrow X1="50" Y1="0" X2="50" Y2="60" Height="60" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <!--送修登记查询-->
            <StackPanel Grid.Column="4" Grid.Row="1" Orientation="Horizontal">
                <shape:Arrow X1="0" Y1="20" X2="150" Y2="20" Width="150" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <Button Grid.Column="5" Grid.Row="1" Content="送修登记查询"/>
            <!--客户检测新增-->
            <Button Grid.Row="3" Grid.Column="3" Content="客户检测新增"/>
            <StackPanel Grid.Row="4" Grid.Column="3" Orientation="Vertical">
                <shape:Arrow X1="50" Y1="0" X2="50" Y2="60" Height="60" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <!--客户检测查询-->
            <StackPanel Grid.Column="4" Grid.Row="3" Orientation="Horizontal">
                <shape:Arrow X1="0" Y1="20" X2="150" Y2="20" Width="150" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <Button Grid.Column="5" Grid.Row="3" Content="客户检测查询"/>
            
            <!--原厂配件登记-->
            <StackPanel Grid.Column="2" Grid.Row="3" Orientation="Horizontal">
                <shape:Arrow X1="150" Y1="20" X2="0" Y2="20" Width="150" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <Button Grid.Column="1" Grid.Row="3" Content="原厂配件登记"/>
            <StackPanel Grid.Column="2" Grid.Row="2" Orientation="Horizontal">
                <shape:Arrow X1="150" Y1="60" X2="0" Y2="0" Width="150" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <Button Grid.Column="1" Grid.Row="1" Content="异常单据查找"/>
            <!--主要报表查询-->
            <Button Grid.Column="1" Grid.Row="5" Content="汇总查询分析"/>
            <Button Grid.Column="1" Grid.Row="7" Content="故障统计分析"/>
            <Button Grid.Column="1" Grid.Row="9" Content="维修记录统计"/>
            <Button Grid.Column="1" Grid.Row="11" Content="快递单打印"/>
            <!--产品报价新增-->
            <Button Grid.Row="5" Grid.Column="3" Content="产品报价新增"/>
            <StackPanel Grid.Row="6" Grid.Column="3" Orientation="Vertical">
                <shape:Arrow X1="50" Y1="0" X2="50" Y2="60" Height="60" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <!--产品报价查询-->
            <StackPanel Grid.Column="4" Grid.Row="5" Orientation="Horizontal">
                <shape:Arrow X1="0" Y1="20" X2="150" Y2="20" Width="150" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <Button Grid.Column="5" Grid.Row="5" Content="产品报价查询"/>
            <!--配件领料新增-->
            <Button Grid.Row="7" Grid.Column="3" Content="配件领料新增"/>
            <StackPanel Grid.Row="8" Grid.Column="3" Orientation="Vertical">
                <shape:Arrow X1="50" Y1="0" X2="50" Y2="60" Height="60" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <!--配件领料查询-->
            <StackPanel Grid.Column="4" Grid.Row="7" Orientation="Horizontal">
                <shape:Arrow X1="0" Y1="20" X2="150" Y2="20" Width="150" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <Button Grid.Column="5" Grid.Row="7" Content="配件领料查询"/>
            <!--维修结案新增-->
            <Button Grid.Row="9" Grid.Column="3" Content="维修结案新增"/>
            <StackPanel Grid.Row="10" Grid.Column="3" Orientation="Vertical">
                <shape:Arrow X1="50" Y1="0" X2="50" Y2="60" Height="60" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <!--维修结案查询-->
            <StackPanel Grid.Column="4" Grid.Row="9" Orientation="Horizontal">
                <shape:Arrow X1="0" Y1="20" X2="150" Y2="20" Width="150" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <Button Grid.Column="5" Grid.Row="9" Content="维修结案查询"/>
            <!--维修发货新增-->
            <Button Grid.Row="11" Grid.Column="3" Content="维修发货新增"/>
            <StackPanel Grid.Column="4" Grid.Row="11" Orientation="Horizontal">
                <shape:Arrow X1="0" Y1="20" X2="150" Y2="20" Width="150" HeadWidth="7" HeadHeight="5" Stroke="Black" StrokeThickness="0.8" />
            </StackPanel>
            <Button Grid.Column="5" Grid.Row="11" Content="维修发货追踪"/>
        </Grid>
    </UserControl>

    下面为 画箭头使用的类

    public sealed class Arrow : Shape
        {
            public static readonly DependencyProperty X1Property = DependencyProperty.Register("X1", typeof(double), typeof(Arrow), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
            public static readonly DependencyProperty Y1Property = DependencyProperty.Register("Y1", typeof(double), typeof(Arrow), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
            public static readonly DependencyProperty X2Property = DependencyProperty.Register("X2", typeof(double), typeof(Arrow), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
            public static readonly DependencyProperty Y2Property = DependencyProperty.Register("Y2", typeof(double), typeof(Arrow), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure)); 
            public static readonly DependencyProperty HeadWidthProperty = DependencyProperty.Register("HeadWidth", typeof(double), typeof(Arrow), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
            public static readonly DependencyProperty HeadHeightProperty = DependencyProperty.Register("HeadHeight", typeof(double), typeof(Arrow), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure)); 
            [TypeConverter(typeof(LengthConverter))]
            public double X1
            {
                get { return (double)base.GetValue(X1Property); }
                set { base.SetValue(X1Property, value); }
            }
            [TypeConverter(typeof(LengthConverter))]
            public double Y1
            {
                get { return (double)base.GetValue(Y1Property); }
                set { base.SetValue(Y1Property, value); }
            }
            [TypeConverter(typeof(LengthConverter))]
            public double X2
            {
                get { return (double)base.GetValue(X2Property); }
                set { base.SetValue(X2Property, value); }
            }
            [TypeConverter(typeof(LengthConverter))]
            public double Y2
            {
                get { return (double)base.GetValue(Y2Property); }
                set { base.SetValue(Y2Property, value); }
            }
            [TypeConverter(typeof(LengthConverter))]
            public double HeadWidth
            {
                get { return (double)base.GetValue(HeadWidthProperty); }
                set { base.SetValue(HeadWidthProperty, value); }
            }
            [TypeConverter(typeof(LengthConverter))]
            public double HeadHeight
            {
                get { return (double)base.GetValue(HeadHeightProperty); }
                set { base.SetValue(HeadHeightProperty, value); }
            }
            protected override Geometry DefiningGeometry
            {
                get
                {
                    // Create a StreamGeometry for describing the shape
                    StreamGeometry geometry = new StreamGeometry();
                    geometry.FillRule = FillRule.EvenOdd;
    
                    using (StreamGeometryContext context = geometry.Open())
                    {
                        InternalDrawArrowGeometry(context);
                    }
    
                    // Freeze the geometry for performance benefits
                    geometry.Freeze();
    
                    return geometry;
                }
            }        
            private void InternalDrawArrowGeometry(StreamGeometryContext context)
            {
                double theta = Math.Atan2(Y1 - Y2, X1 - X2);
                double sint = Math.Sin(theta);
                double cost = Math.Cos(theta);
    
                Point pt1 = new Point(X1, this.Y1);
                Point pt2 = new Point(X2, this.Y2);
    
                Point pt3 = new Point(
                    X2 + (HeadWidth * cost - HeadHeight * sint),
                    Y2 + (HeadWidth * sint + HeadHeight * cost));
    
                Point pt4 = new Point(
                    X2 + (HeadWidth * cost + HeadHeight * sint),
                    Y2 - (HeadHeight * cost - HeadWidth * sint));
    
                context.BeginFigure(pt1, true, false);
                context.LineTo(pt2, true, true);
                context.LineTo(pt3, true, true);
                context.LineTo(pt2, true, true);
                context.LineTo(pt4, true, true);
            }
            
        
        }

     

     

     public class CustomerData
        {
            public static double AddHeight = 35.0;
        }

     本人说水平有限,请批评指正。  

     UserControl 在加入到 主界面是,Width 会随主界面最大化 变大而变大,而Height 侧不会。望大家提出怎么解决。

     

     

     

     

     

     

     

     

    转载于:https://www.cnblogs.com/xieyong_198510/p/3435870.html

    展开全文
  • 基于WPF的工厂物流管理系统界面设计,欢迎下载谢谢
  • WPF库存管理系统界面(仿360UI风格)

    万次阅读 2013-01-08 21:20:15
    在网络上常见的WPF仿360UI基础上改造,加上业务逻辑实现功能,界面如下: 数据编辑修改页面由于是第一次使用WPF,对于WPF中常用的MVVM模式并未涉及,业务逻辑使用CodeSmith自动生成类库文件。

                在网络上常见的WPF仿360UI基础上改造,加上业务逻辑实现功能,界面如下:

              数据编辑修改页面



    由于是第一次使用WPF,对于WPF中常用的MVVM模式并未涉及,业务逻辑使用CodeSmith自动生成类库文件。

    以下附上源码下载:

    http://download.csdn.net/detail/taomanman/9627896



    ===========================================================================

    如果觉得对您有帮助,微信扫一扫支持原创:





              


    
    展开全文
  • WPF管理系统

    2019-09-04 15:07:44
    这是一个基于WPF开发的管理系统,该系统主要描述wpf界面的构成。
  • 系统是一个基于WPF编写的酒店类管理系统界面设计采用WPF美化工具,程序保证完整无错.如出现错误.,请自行检测下安装步骤和方法~
  • WPF版本的教学辅助系统,精美的界面效果,炫丽的动画实现,真人发音技术
  • 界面定义MouseLeftButtonDown事件,触发窗体移动 <Border Background="#007DFA" CornerRadius="10,10,0,0" MouseLeftButtonDown="WinMove_LeftButtonDown"/> private void WinMove_LeftButtonDown(object ...
  • 登录界面布局 <Window x:Class="Zhaoxi.CourseManagement.View.LoginView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ...
  • WPF养老保险系统登入界面前言思路XAML部分代码C#部分代码 前言 因 为数据库在做MVC版的养老保险系统时就已经做好了,所以这里直接用以前的,就不再重新做数据库了 言归正传, 因为MVC版的养老系统配色风格过于古老,所以...
  • 一个系统框架除了功能菜单导航,有...系统界面设计,就不进行技术细节介绍了,主题以框架设计为主,Xaml源码参考: <Fluent:RibbonWindow x:Class="TLAgent.SecurityManager.WPF.MainWindow" xmlns="http:/...
  • 人事管理系统界面与登录界面--WPF

    千次阅读 2015-11-27 16:29:12
    人事管理系统界面与登录界面需解决的问题: 如何在登录成功之后,关闭登录界面,显示主界面。 解决方法如下: 1、重写App.cs文件 /// /// 程序启动 /// /// protected override void OnStartup...
  • 人事管理系统界面--WPF

    千次阅读 2015-11-27 16:05:52
    人事管理系统界面要求如下: 1、如何解决点击一个Button,主界面右边显示一个窗体的问题。 2、如何美化主界面。 3、如何减少主界面XAML的代码 解决方案: 1、使用Tab。 2、引用Dictionary.xaml来美化界面。 ...
  • 要做个大屏触屏应用,要对信息管理系统进行展示之用。客户端是Window7或Windows10操作系统,54寸大屏电脑电视一体机...请问如何用VS.NET提供的WPF怎么实现,才能达到上面的效果。能不能提供相关参考资料或Demo,谢谢!
  • WPF管理系统_demo

    2018-08-03 21:07:35
    WPF设计Demo,不用于WinForm窗体,WPF界面性和可开发性更佳
  • WPF客户管理系统

    2014-03-20 15:42:37
    利用WPF界面的客户信息管理系统界面比winform美观,利用excel做数据库,方便。
  • 一个用。net3.5最新技术做的oa系统 ,有wpf做的界面 wff 的工作流审批,wcf 通信服务 ,并把最新的技术机密结合,面向服务架构,soa 架构,学习微软最新技术的最佳资料
  • WPF开发教程 ----WPF C# 编程 界面开发(很不错)

    千次下载 热门讨论 2010-07-25 18:54:00
    4. WPF基础之属性系统 26 5. WPF基础之路由事件 33 6. WPF基础之布局系统 46 7. WPF基础之样式设置和模板化 51 8. 详谈WPF开发中的数据虚拟化 64 XAML语法 74 1. XAML语法术语 74 2. 代码隐藏和XAML 82 3. XAML和...
  • 人事管理系统登录界面--WPF

    千次阅读 2015-11-27 15:44:16
    登录界面要求如下: 1、如何保证密码的安全性。 2、如何进行密码验证。 3、如何当密码输错三次,用户自动锁定。 4、如何提示用户。 问题解决方案: 1、采用MD5加密,再进行加盐处理。 2、输入的密码加密,...
  • WPF缩写为Windows Presentation Foundation的...WPF是微软新一代图形系统,运行在.NET Framework 3.0架构下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX 9/10技术的WPF不仅带来了前所
  • 最近做了一个 wpf 系统 基于 .net Framework 4.0 目前已经有数万用户正常使用。使用环境有xp win7 win8 但发现有一个用户的电脑未能正常运行,表现为: win7操作系统,已安装.net Framework4.5 (已使用...
  • 3.附加类实现登陆界面信息绑定 public class NotifyBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void DoNotify([CallerMemberName] string propName = ...
  • DevExpress技术交流群2:775869749欢迎一起进群讨论 ...系统背景 平台:WPF 产品:DXGrid for WPF 单元元素的DataContext.中包含EditGridCellData对象。 使用以下绑定路径访问单元格值、列和ViewModel属性: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 874
精华内容 349
关键字:

wpf系统界面