注意:

d:DesignHeight="450"   d:DesignWidth="800"   与   Height="450" Width="750"  区别

在UserControl(子窗体) 使用  d:DesignHeight  d:DesignWidth时,UserControl(子窗体)的大小会随着ContentControl容器(父窗体)大小改变而改变,子窗体原有的布局也改变,比如主窗体最大化,  不推荐。

UserControl(子窗体)尽量使用Height   Width。

<UserControl x:Class="Wpf_Math.MyFilter_Gaussian.UC_GaussianFilter"
             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" 
             xmlns:local="clr-namespace:Wpf_Math.MyFilter_Gaussian"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800"   此行删除
             Height="450" Width="750"  
             Background="LightBlue">

也可组合使用

                        例1    d:DesignHeight="450"   Width="750" 

                        例2  d:DesignWidth="800"    Height="450" 

1.新建UserControl

可看到刚刚新建的文件UserControl页面,同样的方法再建UserControl页面

2.主窗口切换UserControl页面

按两个按键切换UserControl页面



            <Button x:Name="btn_kaimanfilter" 
                      Content="卡尔曼滤波"
                      Height="30" 
                      Click="btn_Click"></Button>
            <Button x:Name="btn_gaussianfilter" 
                    Content="高斯滤波" Height="30" 
                    Click="btn_Click">
            </Button>

    <!-- 我是工作区域 -->
    <ContentControl x:Name="contentControl_workSpace" Background="LightBlue">
        <ContentControl.LayoutTransform>
            <ScaleTransform ScaleX="1" ScaleY="1"/>
        </ContentControl.LayoutTransform>
    </ContentControl>

using System.Diagnostics;
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;
using Wpf_Math.MyFilter_Gaussian;
using Wpf_Math.MyFilter_Kalman;


namespace Wpf_Math
{

    public partial class MainWindow : Window
    {
     
        UC_GaussianFilter uC_GaussianFilter;
        UC_KalmanFilter   uC_KalmanFilter;
        public MainWindow()
        {
            InitializeComponent();

            uC_GaussianFilter = new UC_GaussianFilter();
            uC_KalmanFilter = new UC_KalmanFilter();

        }

        private void btn_Click(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;
            Debug.Write("你点击了"+ button.Name + "\r\n");
            switch (button.Name)
            {

                case "btn_kaimanfilter": {

                        //切换界面1
                        contentControl_workSpace.Content = uC_KalmanFilter; 
                        break; 
                    }
                case "btn_gaussianfilter": {

                       //切换界面2
                        contentControl_workSpace.Content = uC_GaussianFilter;
                        break; 
                    }

                default: break;

            }

            
        }
    }
}

更多推荐