首页 > 其他分享 >Wpf Prism初体验

Wpf Prism初体验

时间:2023-12-01 10:59:17浏览次数:31  
标签:Body 初体验 break Prism 文件夹 new Wpf public

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

1、项目引入 Prism.DryIoc 

 2、规则说明

窗体必须放在Views文件夹下而且必须以View结尾,ViewModel必须放在ViewModels文件夹下面,文件必须以ViewModel结尾。

在prism框架下,可以不为窗体设定数据上下文,但,在窗体中必须显示声明:

        xmlns:Prism="http://prismlibrary.com/"  
        Prism:ViewModelLocator.AutoWireViewModel="True"

在App.xaml的cs文件中要显示声明继承自 PrismApplication

    public partial class App : PrismApplication
    {
        protected override Window CreateShell()
        {
            return Container.Resolve<MainView>();
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        { 
        }
    }

app.xaml 更改如下:

<Prism:PrismApplication x:Class="WpfApp3.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApp3"
             xmlns:Prism="http://prismlibrary.com/" 
                        >
    <Application.Resources>
         
    </Application.Resources>
    </Prism:PrismApplication>

注:xaml中必须显示引入 xmlns:Prism ,且修改窗体标签为:<Prism:PrismApplication>   </Prism:PrismApplication>  

 xmlns:Prism="http://prismlibrary.com/" 

3、新建Views文件夹,并创建 MainView.xaml

<Window x:Class="WpfApp3.Views.MainView"
        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:WpfApp3"
        xmlns:Prism="http://prismlibrary.com/"  
        Prism:ViewModelLocator.AutoWireViewModel="True"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <StackPanel Orientation="Horizontal">
            <Button Content="viewA" Margin="5" Height="35" Width="100" Command="{Binding BtnCommand}" CommandParameter="viewA"></Button>
            <Button Content="viewB" Margin="5" Height="35" Width="100" Command="{Binding BtnCommand}" CommandParameter="viewB"></Button>
            <Button Content="viewC" Margin="5" Height="35" Width="100" Command="{Binding BtnCommand}" CommandParameter="viewC"></Button>
        </StackPanel>

        <ContentControl Grid.Row="1" Content="{Binding Body}"/>
    </Grid>
</Window>
View Code

4、新建 ViewModels 文件夹,并新建viewModel如下

 public class MainViewModel : BindableBase
    {
        public DelegateCommand<string> BtnCommand { get;private set; }
       


        public MainViewModel()
        {
             BtnCommand = new DelegateCommand<string>(GoUrl);
             Body = new viewA();
        }

        private object body;
        public object Body
        {
            get { return this.body; }
            set
            {
                this.body = value;
                RaisePropertyChanged();
            }
        }

        private void GoUrl(string param)
        {
            switch (param)
            {
                case "viewA": Body = new viewA(); break;
                case "viewB": Body = new viewB(); break;
                case "viewC": Body = new viewC(); break;
                default: Body = new viewA(); break;
            }
        }
    }

说明:viewModel 继承自 BindableBase,属性双向绑定需设置: RaisePropertyChanged(); ,Command命令使用: DelegateCommand,带参数的使用  DelegateCommand<T>

5、新建 UserControls 文件夹,并创建用户控件 ViewA/ViewB/ViewC

以ViewA为例

<UserControl x:Class="WpfApp3.UserControls.viewA"
             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:WpfApp3.UserControls"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid>
        <TextBlock Text="I am ViewA" FontSize="18"/>
    </Grid>
</UserControl>

5、效果如下:

 

@天才卧龙的博客

标签:Body,初体验,break,Prism,文件夹,new,Wpf,public
From: https://www.cnblogs.com/chenwolong/p/17869202.html

相关文章

  • 1、vue初体验
    1、在页面上引用vue.mim.js文件,有个 min的是压缩的意思。<scripttppe="../vue.min.js"></script>2、在页面上添加div元素,然后添加一个列表,让产品展示出来 <div id="showPage">  <h1>系统名称:{{ title}}  </h1> <ul>   <li v-for=&quo......
  • WPF资源
    一、静态动态资源1.资源定义<Window.Resources><SolidColorBrushx:Key="SolidColor"Color="Red"/></Window.Resources> 2.资源使用:动态、静态<ButtonContent="button1"BorderBrush="{StaticRe......
  • WPF应用开发之控件动态内容展示
    在我们开发一些复杂信息的时候,由于需要动态展示一些相关信息,因此我们需要考虑一些控件内容的动态展示,可以通过动态构建控件的方式进行显示,如动态选项卡展示不同的信息,或者动态展示一个自定义控件的内容等等,目的就是能够减少一些硬编码的处理方式,以及能够灵活的展示数据。本篇随笔......
  • Wpf 第三方Mvvm包(mvvmLight/Microsoft.Toolkit.Mvvm/CommunityToolkit.Mvvm)
    十年河东,十年河西,莫欺少年穷学无止境,精益求精 mvvmLight和 Microsoft.Toolkit.Mvvm已被Nuget弃用且不再更新,在此不作说明CommunityToolkit.Mvvm是NetCore版本引用包,详情参考:WPFMVVM框架:CommunityToolkit.Mvvm包使用介绍1、wpf项目中使用 CommunityToolkit.Mvvm(NetCo......
  • WPF MVVM 学习理解
    <StackPanel><TextBoxText="{BindingName}"/><TextBoxText="{BindingTitle}"/><ButtonHeight="50"Command="{BindingShowCommand}"/></StackPanel>数据上下文绑定:this.DataContex......
  • WPF应用开发之附件管理
    在我们之前的开发框架中,往往都是为了方便,对附件的管理都会进行一些简单的封装,目的是为了方便快速的使用,并达到统一界面的效果,本篇随笔介绍我们基于SqlSugar开发框架的WPF应用端,对于附件展示和控件的一些封装处理界面效果,供大家参考斧正。1、回顾附件管理,Winform端以及VueElement......
  • VUE与WPF树形控件的区别与使用
    VUE:树形结构显示,主要在数据查询的时候把数据拼成树形结构的数据,注意:VUE中树形结构体必须要有children,此对象必须是list类型WPF:树形结构显示,是把所有的数据查询到,然后WPF中的控件通过ID和PID来自动把数据呈现成树形结构 ......
  • wpf 封装 时间日期 双向绑定 输入框 控件
    简单封装一个时间日期输入框DateTimePicker.xaml<UserControlx:Class="FullApp5DateTimePicker.Modules.ModuleName.Views.DateTimePicker"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http......
  • WPF数据绑定对象Binding中的辅助属性
    数据绑定方向——ModelnamespaceSystem.Windows.Data{publicenumBindingMode{TwoWay=0,OneWay=1,OneTime=2,OneWayToSource=3,Default=4}}TwoWay=0,绑定的双方,值可以相互传递OneWay=1,绑定......
  • 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(二)
    DevExpressWPFDiagram(流程图)控件帮助用户完美复制MicrosoftVisioUI,并将信息丰富且组织良好的图表、流程图和组织图轻松合并到您的下一个WPF项目中。在上文中(点击这里回顾>>),我们为大家介绍了DevExpressWPFDiagram(流程图)组件性能优异切信息丰富的流程图功能、轻松地从数据源......