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
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值