zoukankan      html  css  js  c++  java
  • Prism 的 TabControl 导航

    基于Prism 7.1

    最近工作中可能会用到TabControl所以作为小菜的我提前预习了一下,结果并没有我想的那么简单,于是乎 各种网上查,本来用wpf的人就不多 prism 的可查的资料就更少的可怜了,于是我 从prism的官方例子中 找到了合适的,为了防止自己忘记了,先写记录在这里。

    首先我就直接用界面区域 注册 吧tabcontrol 直接写上去了,然后写了个UserControl 用prism 的导航框架直接去导结果就成了这个样子

    发现Tabitem的Header没有,于是就开始查 Header怎么弄出来,功夫不负有心人,终于让我在官方的例子中找到了。

    官方的例子是这样弄的,做一个tabitem的样式,在tabitem 的vm层加一个用来显示header内容的属性,绑定好就可以了,结果就是下面的样子

    这样tabitem 的 header 就显示出来了,知道原理之后我们就可以定制各种好看的tabitem的样式了,下面是代码,写的匆忙请见谅

    前端住窗口

     <Window.Resources>
            <Style TargetType="{x:Type TabItem}">
                <Setter Property="Header" Value="{Binding DataContext.Title}"></Setter>
            </Style>
        </Window.Resources>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="40"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid Grid.Row="0"></Grid>
            <Grid Grid.Row="1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"></ColumnDefinition>
                    <ColumnDefinition Width="3*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <StackPanel Grid.Column="0">
                    <Button Height="30" Margin="3" Command="{Binding NavigateCommand}" CommandParameter="FirstPage">FirstPage</Button>
                    <Button Height="30" Margin="3" Command="{Binding NavigateCommand}" CommandParameter="SecondPage">SecondPage</Button>
                    <Button Height="30" Margin="3" Command="{Binding NavigateCommand}" CommandParameter="ThirdPage">ThirdPage</Button>
                </StackPanel>
                <TabControl Grid.Column="1" prism:RegionManager.RegionName="TabRegion"></TabControl>
            </Grid>
        </Grid>

    主窗口后端代码

    public partial class MainWindow : Window
        {
            private IRegionManager _regionManager;
    
            public ICommand NavigateCommand { get; set; }
    
            public MainWindow(IRegionManager regionManager)
            {
                InitializeComponent();
                _regionManager = regionManager;
                this.DataContext = this;
                NavigateCommand = new DelegateCommand<string>(SetFirst);
            }
    
            private void SetFirst(string path)
            {
                if(path != null)
              _regionManager.RequestNavigate("TabRegion", path);  
            }
        }

    App.xaml.cs

     public partial class App : PrismApplication
        {
            protected override void RegisterTypes(IContainerRegistry containerRegistry)
            {
                containerRegistry.RegisterForNavigation<FirstPage>();
                containerRegistry.RegisterForNavigation<SecondPage>();
                containerRegistry.RegisterForNavigation<ThirdPage>();
            }
    
            protected override Window CreateShell()
            {
                return Container.Resolve<MainWindow>();
            }
        }

    tabitem 用户控件后端代码

    public partial class FirstPage : UserControl
        {
            public string Title { get; set; }
    
            public FirstPage()
            {
                InitializeComponent();
                Title = "FIRST PAGE";
                this.DataContext = this;
            }
        }
    View Code

    完整代码:链接: https://pan.baidu.com/s/1cDZ2yCZoaHCM_GgP4qfTtQ 提取码: 6hsb 

    最后,抱大佬大腿

    不想平凡,奈何太懒 T_T
  • 相关阅读:
    log4net插入access自定义字段
    前端规范
    烤冷面项目进度文档
    响应式布局及bootstrap(实例)
    HTML嵌套规则
    前端规范2-CSS规范
    前端规范1-HTML规范
    入驻博客园
    .net中运用solr提升搜索效率(入门)
    .net 使用validator做数据校验
  • 原文地址:https://www.cnblogs.com/wuyaxiansheng/p/10654263.html
Copyright © 2011-2022 走看看