WPF【11_3】WPF实战-重构与美化(可复用的UI组件)

11-7 【UI】美化主页面

04:40

既然要使用到图片,肯定要把图片设为静态资源保存到项目中。图片复制到VS项目中后,右击图片 - Properties,找到 Build Action: Resource ,这个图片就可以被WPF程序打包了。

UI重新布局:

<Grid>

<Grid.RowDefinitions>

<RowDefinition Height="Auto"/>

<RowDefinition />

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="240"/>

<ColumnDefinition Width="280"/>

<ColumnDefinition />

</Grid.ColumnDefinitions>

<!--header-->

<Border Grid.ColumnSpan="3" Background="#7f3089">

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">

<Image Height="90" Margin="5" Source="/Images/logo.jpg"/>

<TextBlock Text="WPF客户管理系统" FontSize="40" VerticalAlignment="Center" Foreground="#ffffff"/>

</StackPanel>

</Border>

<StackPanel Grid.Row="1" Grid.Column="0">

<Button Content="添加客户"/>

<ListView />

</StackPanel>

<StackPanel Grid.Row="1" Grid.Column="1">

<TextBlock Text="姓名" Margin="10 10 10 0"/>

<TextBox Margin="10" />

<TextBlock Text="身份证" Margin="10 10 10 0"/>

<TextBox Margin="10" />

<TextBlock Text="地址" Margin="10 10 10 0"/>

<TextBox Margin="10" />

<Button Content="保存" Margin="10 10 10 30" VerticalAlignment="Bottom" HorizontalAlignment="Left" />

</StackPanel>

<StackPanel Grid.Row="1" Grid.Column="2">

<ListView />

<TextBlock Text="添加新预约" />

<DatePicker Margin="10" />

<Button Content="预约" />

</StackPanel>

</Grid>

11-8 【UI】组件化布局

如何把上节的 <!--header--> 提取出来,通过 UserControl 封装为可复用的UI组件。

在文件夹""右击 - Add - New Item ,左侧选择 WPF - User Control (WPF) ,命名为:HeaderControl

--\Controls\HeaderControl.xaml

<UserControl x:Class="WPF_CMS.Controls.HeaderControl"

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_CMS.Controls"

mc:Ignorable="d"

d:DesignHeight="450" d:DesignWidth="800">

<Border Background="#7f3089">

<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">

<Image Height="90" Margin="5" Source="/Images/logo.jpg"/>

<TextBlock Text="WPF客户管理系统" FontSize="40" VerticalAlignment="Center" Foreground="#ffffff"/>

</StackPanel>

</Border>

</UserControl>

--\WPF_CMS\MainWindow.xaml

<Window x:Class="WPF_CMS.MainWindow"

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:WPF_CMS"

xmlns:controls="clr-namespace:WPF_CMS.Controls"

mc:Ignorable="d"

Title="MainWindow" Height="450" Width="800">

<Grid>

............

<!--header-->

<controls:HeaderControl Grid.ColumnSpan="3"/>

............

</Grid>

</Window>

修改后,未编译时代码显示依然报错,重新构建(编译)一下代码就可以了。

相关推荐
Dream-Y.ocean16 分钟前
懂你的情绪,记得你在意的事 - 知暖如何用端到端具身交互智能重构 AI 情感陪伴
人工智能·重构·交互
兰亭妙微UI设计公司28 分钟前
兰亭妙微B 端交互设计:横向 & 纵向步骤条完整使用指南
ui
Java后端的Ai之路9 小时前
SSE 接口设计 vs Agent UI:四个开源项目,把「模型吐词」和「界面更新」拆开后,我看懂了差距
ui·开源·sse·agui·agentui
传奇开心果编程14 小时前
【Flutter入门练中学】第8课:动画与过渡
android·学习·flutter·ui·ios
传奇开心果编程16 小时前
【Flutter入门练中学】第11课:状态管理进阶与声明式路由
android·学习·flutter·ui·ios
且随疾风前行.18 小时前
UI核心 - UI绘制流程及原理
ui
大蓝头7 天前
安装包UI美化之路-nsNiuniuSkin全新UI调试与预览方法
ui·electron·安装包·截图控件·截屏控件
慧都小项7 天前
当边缘AI上产线:QtitanDocking 如何让工业 HMI 实现多视图协同
人工智能·qt·ui·边缘计算·qt6.3
微三云 - 廖会灵 (私域系统开发)7 天前
企业大模型应用工程化思考:跳出 Demo 陷阱,构建「业务‑资产‑Agent」三层落地架构
人工智能·矩阵·重构
慧都小项7 天前
Python 跨文件重构怎么验证?PyCharm 用法查找、重构预览与测试流程
python·重构·pycharm·单元测试