2021-08-18 感受一下WPF与SQL数据库的交互,LING语句+MVVM模式

目前在公司负责java的开发为主,担任着设计+开发的岗位,自己目前也在筹备软考,但是今年不是那么景气,因为疫情,软考没开,暂未拿到软件设计师的证,但在我多次设计出较为成功的软件时,公司已经让我担任设计+开发的岗位,设计的主模块不少了。为了未来,再锻炼锻炼自己吧。

其次,接触了WPF的MVVM模式,我感觉前景不会天乐观,但是市面上很火,鞭炮声大又有什么用,当年EesyUI也很火,然后是bootstrop也很火等等,都被淘汰了。
为什么我越是深入了解MVVM模式,就越感觉看不到希望呢?因为实现繁琐,可能是微软为我们开发者考虑得太多了,多得让我们程序员感觉有点喘不过求,而且我们开发者也不太敢孤注一掷去学,害怕孤注一掷学之后在社会找不到好的工作,因为微软的产品被淘汰的太厉害了。最明显的就是当代的培训机构的教学方向,他们就很少有培训机构去主攻微软的,一般都是java、前端、大数据、php居多的。
但是作为框架来学习,吸取有用的知识倒是很不错的,学习和领悟它内在道理。

回到今天主题:
在这里插入图片描述

1.在SQL数据库建立表,数据库无论是SQL、Oracle、mySql,其实差不多的哈,电脑装了SQL,就用SQL吧
在这里插入图片描述
在这里插入图片描述
2.使用VS,连接数据库。在“工程中”…引入下面那段话

在这里插入图片描述
(方式二)当然啦,我们可以使用(引入方式,大家可以自行搜索,我就不累赘了)
在这里插入图片描述
3.新建实体
在这里插入图片描述
4.新建UserViewModel
在这里插入图片描述

 public class UserViewModel : System.ComponentModel.INotifyPropertyChanged
    {
        //构造函数
        public UserViewModel(){
            //查询,用户信息
            this.GetUserMsg();
        }
        //查询,用户信息
        public void GetUserMsg() {
            Model.StudentDomeEntities myModel = new Model.StudentDomeEntities();
            System.Collections.Generic.List<Model.User> 
            userMsg = (from a in myModel.t_lwh_sys_user
                       orderby a.created_date descending
                       where a.is_enble == "1"
                       select new Model.User
                       {
                           user_id = a.user_id,//用户Id
                           user_name = a.user_name,//用户名
                           emp_name = a.emp_name,//员工姓名
                           password = "******",//密码
                           is_enble = a.is_enble == "1" ? "有效" : "无效",//是否有效
                           created_date = a.created_date.ToString(),//创建时间
                       }).ToList();
            _ocUserMsg = userMsg;
         }
        //接口-通知客户端更改属性
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        private void RaisePropertyChanged(string propertyName)
        {
            System.ComponentModel.PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        } 
        //集合-用户信息
        private static System.Collections.Generic.List<Model.User> _ocUserMsg;
        public System.Collections.Generic.List<Model.User> ocUserMsg
        {
            get {
                return _ocUserMsg;
            }
            set {
                _ocUserMsg = value;
                this.RaisePropertyChanged("ocUserMsg");
            }
        }
    }

代码这一块,我稍微啰嗦一下:

【接口-通知客户端更改属性】这一个是双向绑定的作用,为了实现后端数据变动的同时也改变前端的显示数据,就是刷新的作用。
【集合-用户信息】这个是为给表格设置值,与让表格获取值。
其他的查询就是我们普通的linq查询。

5.绑定前端
在这里插入图片描述


 <DataGrid  x:Name="dataGrid" IsReadOnly="True" AutoGenerateColumns="False" 
                              CanUserResizeColumns="False" CanUserResizeRows="False" 
                              SelectionMode="Single" CanUserReorderColumns="False"
                              AlternationCount="2"  RowHeaderWidth="0" CanUserAddRows="False" 
                              Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="7"
                               Background="White" BorderBrush="White" 
                               GridLinesVisibility="None" Foreground="#FF5A5A5A"
                              AlternatingRowBackground="#FFF6F6F6" AreRowDetailsFrozen="True" VerticalAlignment="Top" Margin="0,0,-2,-8" 
                       ItemsSource="{Binding ocUserMsg}">
                <DataGrid.Columns>
                    <!--<DataGridTextColumn Header="ID" Width=".09*" Binding="{Binding PartID}" />-->
                    <DataGridTemplateColumn Header="ID" Width=".06*" Visibility="Collapsed">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <WrapPanel>
                                    <TextBlock Text="{Binding user_id}" Foreground="#FF5A5A5A" Padding="10"></TextBlock>
                                </WrapPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="用户ID" Width=".6*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <WrapPanel>
                                    <TextBlock Text="{Binding user_id}" Foreground="#FF5A5A5A" Padding="10"></TextBlock>
                                </WrapPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="用户名" Width=".6*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <WrapPanel>
                                    <TextBlock Text="{Binding user_name}" Foreground="#FF5A5A5A" Padding="10"></TextBlock>
                                </WrapPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="真实姓名" Width=".6*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <WrapPanel>
                                    <TextBlock Text="{Binding emp_name}" Foreground="#FF5A5A5A" Padding="10"></TextBlock>
                                </WrapPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="登录密码" Width=".6*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <WrapPanel>
                                    <TextBlock Text="{Binding password}" Foreground="#FF5A5A5A" Padding="10"></TextBlock>
                                </WrapPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="是否有效" Width=".2*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <WrapPanel>
                                    <TextBlock Text="{Binding is_enble}" Foreground="#FF5A5A5A" Padding="10"></TextBlock>
                                </WrapPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="创建时间" Width=".37*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <WrapPanel>
                                    <TextBlock Text="{Binding created_date}" Foreground="#FF5A5A5A" Padding="10"></TextBlock>
                                </WrapPanel> 
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn Header="操作"  Width=".27*">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <Button  Content="🖍"  Width="35" Height="15"  FontSize="8" Padding="1"  ToolTip="编辑" />
                                </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPF是一种基于XAML语言的用户界面开发框架,使开发人员能够轻松创建漂亮和高效的桌面应用程序。MVVM是一种模式,它在WPF应用程序广泛使用,它提供了一种分离UI和业务逻辑的方式,从而简化了代码结构。Prism是一个开源框架,它基于MVVM模式WPF框架,提供了一些技术和工具,使开发人员能够更轻松地构建复杂的WPF应用程序。 使用WPF MVVM Prism框架可以帮助开发人员提高应用程序的可维护性和可扩展性。通过MVVM,开发人员可以创建一个适应各种应用程序场景的模型,并将其与UI分离。数据绑定和命令绑定使开发人员能够更轻松地将模型数据和逻辑与UI控件集成起来。Prism框架还提供了一些工具和功能,如模块化应用程序开发、事件聚合器、导航、对话框、异常处理等功能。这些工具使开发人员能够更轻松地构建复杂的应用程序,并提供了一种可扩展和可重用的方法。 总之,使用WPF MVVM Prism可以使开发人员更轻松地构建复杂的应用程序,并提高应用程序的可维护性和可扩展性。开发人员可以根据自己的需求选择使用这个框架来开发WPF应用程序,从而提高他们的工作效率和代码质量。 ### 回答2: WPF MVVM Prism是一种基于Windows Presentation Foundation(WPF)的软件开发模式,采用了MVVM(Model-View-ViewModel)设计模式和Prism框架来实现软件开发。MVVM是一种在WPF应用程序使用的设计模式,它将应用程序的视图(View)与应用程序的模型(Model)分离开来,通过ViewModel来连接二者。Prism是一个帮助开发人员编写出复杂、可管控、可扩展和可维护的WPF应用程序的框架。 WPF MVVM Prism提供了很多好处:首先,它能实现软件的可重用性,通过将代码和视图分离,使得代码可以在多个不同的视图重复使用,提高了开发效率。其次,它可以提高软件的可维护性,通过将逻辑和视图分离,确保逻辑代码与UI代码之间更少的耦合,提高了软件的可扩展性。此外,它还可以提高软件的可测试性,由于MVVM模式将视图和逻辑分离开,所以开发人员可以更容易地编写出单元测试代码,来测试逻辑代码。最后,由于Prism框架提供了一些通用的,可定制的模块和服务,使得开发人员可以更快地实现常见功能、缩短开发时间。 总之,WPF MVVM Prism是一种高效、可扩展和易于维护的软件开发模式,它将视图和逻辑分离,提高了软件的可重用性和可测试性,同时也提高了软件的可扩展性和可复用性。 ### 回答3: WPF是一种桌面应用程序框架,它允许您为Windows创建高度交互式和可视化的应用程序界面。MVVM是一种软件编程模式,它将用户界面(UI)与业务逻辑分离,以便更好地实现可维护,可扩展和可组合的代码。Prism是一个WPF和Silverlight应用程序的组件库,它提供了一些可重用和可扩展的基础设施组件,帮助您更快速地构建、测试和维护WPF应用程序。因此,WPF MVVM Prism的组合可以帮助您更轻松高效地开发WPF应用程序。您可以使用MVVM模式来改进应用程序的结构和测试,使用Prism来更好地组织和可扩展您的代码,以及使用WPF来实现交互丰富的UI。同时还可以使用Prism提供的事件聚合器、导航器和模块化架构,实现更灵活的应用程序设计。WPF MVVM Prism的组合提供了一种更有效的方式来构建WPF应用程序,以满足现代用户体验的需求,并且更容易测试和维护,因此它已成为WPF应用程序开发的重要组合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值