首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【愚公系列】2023年09月 WPF控件专题 XAML介绍
2
【愚公系列】2023年09月 WPF控件专题 WPF应用程序组成
3
【愚公系列】2023年09月 WPF控件专题 Window窗体属性和事件
4
【愚公系列】2023年09月 WPF控件专题 Label、TextBox、PasswordBox控件介绍
5
【愚公系列】2023年09月 WPF控件专题 Button控件详解
6
【愚公系列】2023年09月 WPF控件专题 RadioButton控件详解
7
【愚公系列】2023年09月 WPF控件专题 CheckBox控件详解
8
【愚公系列】2023年09月 WPF控件专题 Image控件详解
9
【愚公系列】2023年09月 WPF控件专题 Border控件详解
10
【愚公系列】2023年09月 WPF控件专题 ComboBox控件详解
11
【愚公系列】2023年09月 WPF控件专题 ListBox控件详解
12
【愚公系列】2023年09月 WPF控件专题 DatePicker控件详解
13
【愚公系列】2023年09月 WPF控件专题 Calendar控件详解
14
【愚公系列】2023年09月 WPF控件专题 Slider控件详解
15
【愚公系列】2023年09月 WPF控件专题 ProgressBar控件详解
16
【愚公系列】2023年10月 WPF控件专题 StackPanel控件详解
17
【愚公系列】2023年10月 WPF控件专题 WrapPanel控件详解
18
【愚公系列】2023年10月 WPF控件专题 DockPanel控件详解
19
【愚公系列】2023年10月 WPF控件专题 Canvas控件详解
20
【愚公系列】2023年10月 WPF控件专题 Grid控件详解
21
【愚公系列】2023年10月 WPF控件专题 Groupbox控件详解
22
【愚公系列】2023年10月 WPF控件专题 Expander控件详解
23
【愚公系列】2023年10月 WPF控件专题 TabControl控件详解
24
【愚公系列】2023年10月 WPF控件专题 Frame控件详解
25
【愚公系列】2023年10月 WPF控件专题 ListView控件详解
26
【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解
27
【愚公系列】2023年10月 WPF控件专题 Menu控件详解
28
【愚公系列】2023年10月 WPF控件专题 ContextMenu控件详解
29
【愚公系列】2023年10月 WPF控件专题 TreeView控件详解
30
【愚公系列】2023年10月 WPF控件专题 ToolBar控件详解
31
【愚公系列】2023年10月 WPF控件专题 ToolBarTray控件详解
32
【愚公系列】2023年10月 WPF控件专题 StatusBar控件详解
33
【愚公系列】2023年11月 WPF控件专题 MediaElement控件详解
34
【愚公系列】2023年11月 WPF控件专题 RichTextBox控件详解
35
【愚公系列】2023年11月 WPF控件专题 GridView控件详解
36
【愚公系列】2023年11月 WPF控件专题 Rectangle控件详解
37
【愚公系列】2023年11月 WPF控件专题 Popup控件详解
38
【愚公系列】2023年11月 WPF控件专题 OpenFileDialog控件详解
39
【愚公系列】2023年11月 WPF控件专题 SaveFileDialog控件详解
40
【愚公系列】2023年11月 WPF控件专题 RepeatButton控件详解
41
【愚公系列】2023年11月 WPF控件专题 Ellipse控件详解
42
【愚公系列】2023年11月 WPF控件专题 Polygon控件详解
43
【愚公系列】2023年11月 WPF控件专题 Path控件详解
44
【愚公系列】2023年11月 WPF控件专题 WindowFormsHost控件详解
45
【愚公系列】2023年11月 WPF控件专题 WebBrowser控件详解
46
【愚公系列】2023年11月 WPF控件专题 Validation控件详解
47
【愚公系列】2023年11月 WPF控件专题 Page控件详解
48
【愚公系列】2023年11月 WPF控件专题 PrintDialog控件详解
49
【愚公系列】2023年11月 WPF控件专题 Track控件详解
50
【愚公系列】2023年11月 WPF控件专题 Polyline控件详解

【愚公系列】2023年10月 WPF控件专题 Frame控件详解

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。

🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。

原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。

自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。

🚀一、Frame控件详解

WPF中的Frame控件是一个容器控件,它可以用来显示其他WPF控件或页面。Frame控件可以嵌套在其他容器控件中,例如Grid、StackPanel、DockPanel等。它类似于HTML页面中的iframe。

可以使用Frame控件来实现基于页面的导航。可以将每个页面定义为一个单独的XAML文件,并将其导航到Frame控件中。Frame控件可以管理页面之间的转换、后退和前进操作。

以下是一些常见的Frame控件属性:

  • Source:用于设置Frame控件要显示的页面的URI。
  • JournalOwnership:用于设置Frame控件是否应该自己管理页面导航历史记录。
  • NavigationUIVisibility:用于设置Frame控件是否应该显示内置的导航UI元素(例如后退和前进按钮)。

下面是一个简单的示例代码,显示如何在Frame控件中导航到一个新页面:

代码语言:html
复制
<Window>
  <StackPanel>
    <Frame x:Name="myFrame" NavigationUIVisibility="Hidden"/>
    <Button Content="Go to Page 2" Click="Button_Click"/>
  </StackPanel>
</Window>
代码语言:c#
复制
private void Button_Click(object sender, RoutedEventArgs e)
{
    myFrame.Navigate(new Uri("Page2.xaml", UriKind.Relative));
}

此示例创建了一个包含Frame控件和一个按钮的窗口。单击按钮时,它导航到一个名为“Page2.xaml”的页面。注意,页面的URI是相对于当前XAML文件的。

🔎1.属性介绍

WPF中Frame控件具有以下常用属性:

  1. Source:指定要显示的内容的URI地址。
  2. NavigationUIVisibility:指定是否显示导航UI,有三个枚举值: Automatic、Hidden、Visible。Automatic是默认值,会根据浏览器历史记录自动显示或隐藏导航UI。
  3. JournalOwnership:指定Frame控件是否独占导航历史记录,有两个枚举值:Automatic和OwnsJournal。Automatic是默认值,表示Frame控件将与父级窗口共享相同的导航历史记录。OwnsJournal表示Frame控件将拥有自己的导航历史记录。
  4. SandboxExternalContent:指定是否启用沙箱模式,可以防止加载的内容访问应用程序的其他部分。
  5. AllowsTransparency:指定是否允许窗口透明化。
  6. KeepAlive:指定是否保持导航的内容在内存中,以便在需要时恢复导航。
  7. NavigationService:获取导航服务对象,可以用它来控制导航。🔎2.常用场景Frame控件是WPF中的一个容器控件,可以用于在同一个窗口中显示不同的页面内容。常用场景包括:
  8. 实现导航功能:在一个页面中可以通过点击链接或按钮切换到另一个页面,这个操作可以使用Frame控件实现。
  9. 模块化开发:将整个应用程序拆分成多个模块,每个模块对应一个Frame控件,实现各个模块之间的切换。
  10. 框架开发:使用Frame控件作为框架的容器,将所有页面都作为Frame控件的子控件,实现整个框架的应用程序。
  11. 资源管理器:使用Frame控件来实现Windows资源管理器中的文件夹和文件内容的切换。

Frame控件可以方便地实现多页面应用程序,提高应用程序的可读性、可维护性和可扩展性。

🔎3.具体案例

代码语言:html
复制
<Window x:Class="WpfAppTest.FrameWindow"
        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:WpfAppTest"
        mc:Ignorable="d"
        Title="FrameWindow" Height="583.436" Width="874.634" Loaded="Window_Loaded">
        <Grid>
                <!--直接在Window中呈放一个Frame  显示一个页面-->
                <Frame Name="framePage"  HorizontalAlignment="Left" Height="113" Margin="100,47,0,0" VerticalAlignment="Top" Width="220" NavigationUIVisibility="Visible"/>
                <TabControl HorizontalAlignment="Left" Height="306" Margin="88,196,0,0" VerticalAlignment="Top" Width="642">
                        <TabItem Header="TabItem">
                                <Frame Source="PageRoleInfo.xaml" NavigationUIVisibility="Hidden"/>
                        </TabItem>
                        <TabItem Header="TabItem">
                                <Frame Source="PageUserInfo.xaml" NavigationUIVisibility="Hidden"/>
                        </TabItem>
                </TabControl>


        </Grid>
</Window>
代码语言:javascript
复制
private void Window_Loaded(object sender, RoutedEventArgs e)
{
        //1.直接在xaml代码中设置Source
        //2.
        // framePage.Source = new Uri("PageRoleInfo.xaml",UriKind.Relative);
        //3.先实例化Page对象
        PageRoleInfo pageRoleInfo = new PageRoleInfo();
        framePage.Navigate(pageRoleInfo);
        string ss = "aaa";
        framePage.Navigate(pageRoleInfo, ss);//假设需要传值
}

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

下一篇
举报
领券