【demo练习四】:WPF用户控件案例
首先,新建vs中“用户控件(WPF)”,右键项目名 =>"添加"按钮 => 选择“新建项”。
然后选择“用户控件(WPF)” => 起名字 => 点击“添加”按钮。
最后生成用户控件界面。
建好用户控件后开始累代码,如下:
方法一:直接在前台页面调用“用户控件”。
主界面前台:
1 <Window x:Class="自定义用户控件.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:local="clr-namespace:自定义用户控件" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 Title="MainWindow" Height="350" Width="525"> 6 <Viewbox> 7 <Canvas x:Name="canvas_1" Background="SkyBlue" Width="1920" Height="1080"> 8 <local:UserControl1 Width="300" Height="300"/> 9 </Canvas> 10 </Viewbox> 11 </Window>
用户控件前台:
1 <UserControl x:Class="自定义用户控件.UserControl1" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 5 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 6 mc:Ignorable="d" 7 Background="Red" 8 d:DesignHeight="300" d:DesignWidth="300"> 9 <Canvas Width="300" Height="300"> 10 <Button Width="120" Height="40" Canvas.Left="30" Content="按钮" Canvas.Top="61" Click="Button_Click" /> 11 </Canvas> 12 </UserControl>
用户控件的后台:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Windows; 6 using System.Windows.Controls; 7 using System.Windows.Data; 8 using System.Windows.Documents; 9 using System.Windows.Input; 10 using System.Windows.Media; 11 using System.Windows.Media.Imaging; 12 using System.Windows.Navigation; 13 using System.Windows.Shapes; 14 15 namespace 自定义用户控件 16 { 17 /// <summary> 18 /// UserControl1.xaml 的交互逻辑 19 /// </summary> 20 public partial class UserControl1 : UserControl 21 { 22 public UserControl1() 23 { 24 InitializeComponent(); 25 } 26 27 private void Button_Click(object sender, RoutedEventArgs e) 28 { 29 MessageBox.Show("ddd"); 30 } 31 } 32 }
方法二:利用主界面的后台调用“用户控件”。
主界面前台:
1 <Window x:Class="自定义用户控件.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:local="clr-namespace:自定义用户控件" 4 Loaded="Window_Loaded" 5 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 6 Title="MainWindow" Height="350" Width="525"> 7 <Viewbox> 8 <Canvas x:Name="canvas_1" Background="SkyBlue" Width="1920" Height="1080"> 9 </Canvas> 10 </Viewbox> 11 </Window>
用户控件前台:
1 <UserControl x:Class="自定义用户控件.UserControl1" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 5 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 6 mc:Ignorable="d" Loaded="UserControl_Loaded" 7 Background="Red" 8 d:DesignHeight="300" d:DesignWidth="300"> 9 <Canvas Width="300" Height="300"> 10 <Button Width="120" Height="40" Canvas.Left="30" Content="按钮" Canvas.Top="61" Click="Button_Click" /> 11 </Canvas> 12 </UserControl>
用户界面后台:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Windows; 6 using System.Windows.Controls; 7 using System.Windows.Data; 8 using System.Windows.Documents; 9 using System.Windows.Input; 10 using System.Windows.Media; 11 using System.Windows.Media.Imaging; 12 using System.Windows.Navigation; 13 using System.Windows.Shapes; 14 15 namespace 自定义用户控件 16 { 17 /// <summary> 18 /// UserControl1.xaml 的交互逻辑 19 /// </summary> 20 public partial class UserControl1 : UserControl 21 { 22 public UserControl1() 23 { 24 InitializeComponent(); 25 } 26 27 private void Button_Click(object sender, RoutedEventArgs e) 28 { 29 MessageBox.Show("ddd"); 30 } 31 32 private void UserControl_Loaded(object sender, RoutedEventArgs e) 33 { 34 MessageBox.Show("控件加载"); 35 } 36 } 37 }
主界面后台:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Windows; 6 using System.Windows.Controls; 7 using System.Windows.Data; 8 using System.Windows.Documents; 9 using System.Windows.Input; 10 using System.Windows.Media; 11 using System.Windows.Media.Imaging; 12 using System.Windows.Navigation; 13 using System.Windows.Shapes; 14 15 namespace 自定义用户控件 16 { 17 /// <summary> 18 /// MainWindow.xaml 的交互逻辑 19 /// </summary> 20 public partial class MainWindow : Window 21 { 22 public MainWindow() 23 { 24 InitializeComponent(); 25 } 26 27 private void Window_Loaded(object sender, RoutedEventArgs e) 28 { 29 for (int i = 0; i < 10; i++) 30 { 31 uc_test1 _uc_test1 = new uc_test1(); 32 _uc_test1.Width = _uc_test1.Height = 300; 33 canvas_1.Children.Add(_uc_test1); 34 Canvas.SetLeft(_uc_test1, i * 310); 35 } 36 } 37 } 38 }
以上两种方法调用“用户控件”。
不积跬步,无以致千里;不集小流,无以成江海。
如转载本文,请还多关注一下我的博客:https://www.cnblogs.com/Owen-ET/;
我的Github地址:https://github.com/Owen-ET————————————
无善无恶心之体, 有善有恶意之动, 知善知恶是良知, 为善去恶是格物。