WPF —— Border、Frame控件详解

一:Border控件

1.Border介绍

Border(边框)是一个装饰的控件,此控件绘制一个边框、一个背景。用border标签包括目标标签。 不能有多个子元素,要想有多个子元素,多个子元素放在一个父元素下。或者放到grid标签下

2.Border 常用的属性

Background:填充 Border 边界之间的区域或者说是绘制该区域的背景。

BorderBrush:用于绘制外部边框颜色。

BorderThickness:设置 Border 边框的宽度,

CornerRadius:表示将 Border 的角到圆的程度,设置四周的圆角大小。当数值为50的时候,Border变圆。

3.关于Border的示例
cs 复制代码
<Grid>
    <Border Width="100" Height="100"
 Background="LightBlue" BorderBrush="Red" 
BorderThickness="2,2,2,2" CornerRadius="20" >
        <Label Width="100" Height="100" Background="Transparent" 
Content="中国" HorizontalContentAlignment="Center" 
VerticalContentAlignment="Center" 
               FontSize="30"/>
    </Border>
</Grid>

二:Frame控件

1:frame常用的属性

frame 承载页面的标签

source : 承载页面的网址,也可以是自己项目里的页面

<!--source路径修改成 Source="/Pages/MyPage.xaml" 网络路径-->

<!--Source="../Pages/MyPage.xaml" 相对路径-->

<!--./windowBorder.xaml-->

<!--../Pages/MyPage.xaml-->

NavigationUIVisibility 属性 显示出一个自动记录前进后退导航的UI

LoadCompleted 页面加载完成之后的事件 根据对应的函数用来验证页面是否加载完成

2:关于Frame示例
cs 复制代码
 <Frame Name="f1" Source="../Pages/MyPage.xaml" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="30,80" Width="700" Height="300"
 NavigationUIVisibility="Visible"
 LoadCompleted="f1_LoadCompleted" 
>
 </Frame>

fram加载自己页面的时候、页面加载完毕后的事件

如何创建页面

1 点击项目 右键 新建wpf页面

2 页面的根元素是page标签

3 窗口的根元素是window标签

实例如下

cs 复制代码
<Page x:Class="WPFProgram.Pages.MYPage"
      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:WPFProgram.Pages"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800"
      Title="MYPage">

    <Grid Background="LightPink">
        <Label Width="300" Height="40" Content="我叫大帅你记住,智游集团我最帅" FontSize="20" />
    </Grid>
</Page>
使用代码进行页面跳转 跳转的三个方法

<Button Click="Button_Click" Width="100" Height="40" Margin="223,22,477,373" Content="跳转">

</Button>

cs 复制代码
private void f1_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
    //e.ExtraData; 取出页面的参数,例如传递张三
    object e1 = e.ExtraData;
    if(e1!=null)
    {
        // 首次打开窗口显示百度页面,百度页面没有传参数,所以
        // e1是null,点击跳转按钮,加载自己页面的,传递是张三,所以e1就是张三
        MessageBox.Show("页面加载完毕:" + e1.ToString());
    }
}

// 按钮的点击事件
private void Button_Click(object sender, RoutedEventArgs e)
{
    //1 第一种使用frame的source属性进行跳转
    // new uri("网址")
    // this.f1.Source = new Uri("https://www.sina.com.cn/");
    //new uri("网址","网址的类型包含绝对路径和相对路径")
    //this.f1.Source = new Uri("https://www.sina.com.cn/", UriKind.Absolute);


    //2第二种跳转方式 使用Navigate进行跳转
   // this.f1.Navigate(new Uri("https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.frame.navigate?view=windowsdesktop-8.0&devlangs=csharp&f1url=%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(System.Windows.Controls.Frame.Navigate)%3Bk(DevLang-csharp)%26rd%3Dtrue"));
   
    // 跳转到自己的页面 Pages/MyPage.xaml
    //MyPage p = new MyPage(); //创建页面对象
    //this.f1.Navigate(p); // 跳转到当前页面上

    //3第三种跳转方式 使用navigate跳转传参数
    MyPage p1 = new MyPage();
    this.f1.Navigate(p1, "张三"); //参数1是跳转的页面对象,参数2是传递参数
    //参数可以在页面的加载完毕的事件中取出参数值 在上面的f1_LoadCompleted函数中取出张三的值
}
相关推荐
m0_748247551 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php
m0_748255022 小时前
前端常用算法集合
前端·算法
真的很上进2 小时前
如何借助 Babel+TS+ESLint 构建现代 JS 工程环境?
java·前端·javascript·css·react.js·vue·html
web130933203982 小时前
vue elementUI form组件动态添加el-form-item并且动态添加rules必填项校验方法
前端·vue.js·elementui
码农君莫笑3 小时前
使用blazor开发信息管理系统的应用场景
数据库·信息可视化·c#·.net·visual studio
NiNg_1_2343 小时前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
如若1233 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
滚雪球~4 小时前
npm error code ETIMEDOUT
前端·npm·node.js
沙漏无语4 小时前
npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
前端·npm·node.js
supermapsupport4 小时前
iClient3D for Cesium在Vue中快速实现场景卷帘
前端·vue.js·3d·cesium·supermap