WPF中在DataGrid中使用按钮并使用MVVMLight进行值绑定

DataGridDataGrid中使用按钮并使用MVVM进行值绑定

1.界面如下

在这里插入图片描述

2.WPF前端代码

<Window x:Class="RetTest.Views.SetPathWindow"
        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:RetTest.Views"
        mc:Ignorable="d"
        DataContext="{Binding Source={StaticResource Locator},Path=SetPaths}"
        Title="设置路径" Height="700" Width="600" WindowStartupLocation="CenterScreen" ResizeMode="NoResize">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="1" Orientation="Horizontal">
            <Grid Width="600">
                <DataGrid  Name="DATA_GRID" 
                  ItemsSource="{Binding Path=SetPathsConfig,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
                  Margin="0,0,0,0" AutoGenerateColumns="False" IsReadOnly="True">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="文件类型" Binding="{Binding Path=FileTypes ,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="0.15*" />
                        <DataGridTextColumn Header="文件号" Binding="{Binding Path=FileNumbers,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="0.1*" />
                        <DataGridTextColumn Header="路径" Binding="{Binding Path=FilePaths,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="0.3*"/>
                        <DataGridTemplateColumn Header="操作" Width="0.1*">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
                                        <Button Content="导入" Width ="80" FontSize="14" CommandParameter="{Binding}" Command="{Binding Path=DataContext.FileClick,ElementName=DATA_GRID}"></Button>
                                    </StackPanel>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </DataGrid.Columns>
                </DataGrid>
            </Grid>
        </StackPanel>

        
    </Grid>
</Window>

3.后端绑定代码

/*
 * 编辑于2022-12-6
 * 编辑人:
 * 软件:Visual Studio2019
 */
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using RetTest.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace RetTest.ViewModel
{
    public class SetPathsViewModel : ViewModelBase
    {
        
        public SetPathsViewModel()
        {
            FileClick = new RelayCommand<SetPathsModel>(fileClick);
            //Submits = new RelayCommand(submits);
            SetData();
            SetPathsConfig = Definitions.SetPaths;//这个是list值

        }
         #region 设置数据
        /// <summary>
        /// 设置数据
        /// </summary>
        private void SetData()
        {
            Definitions.SetPaths = new List<SetPathsModel>();
           
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元1配置文件",
                FileNumbers = "9",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元2配置文件",
                FileNumbers = "10",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元3配置文件",
                FileNumbers = "11",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元4配置文件",
                FileNumbers = "12",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元5配置文件",
                FileNumbers = "13",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元6配置文件",
                FileNumbers = "14",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元7配置文件",
                FileNumbers = "15",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元8配置文件",
                FileNumbers = "16",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元9配置文件",
                FileNumbers = "17",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元10配置文件",
                FileNumbers = "18",
                FilePaths = ""
            }); Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元11配置文件",
                FileNumbers = "19",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元12配置文件",
                FileNumbers = "20",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元13配置文件",
                FileNumbers = "21",
                FilePaths = ""
            });
            Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元14配置文件",
                FileNumbers = "22",
                FilePaths = ""
            }); Definitions.SetPaths.Add(new SetPathsModel()
            {
                FileTypes = "单元15配置文件",
                FileNumbers = "23",
                FilePaths = ""
            });
        }
        #endregion

        public  RelayCommand<SetPathsModel> FileClick { get; set; }
        public  RelayCommand Submits { get; set; }
        

        private  List<SetPathsModel> setPathsConfig;

        public  List<SetPathsModel> SetPathsConfig
        {
            get
            {
                return setPathsConfig;
            }
            set
            {
                //retConfig = value;
                //RaisePropertyChanged("RetConfig");
                Set(ref setPathsConfig, value);
            }
        }
        
        
        
        public void fileClick(SetPathsModel setPaths)
        {

            OpenFileDialog fd = new OpenFileDialog();
            fd.Filter = "文件|*.bin;*.fxt";
            fd.RestoreDirectory = true;
            fd.InitialDirectory = Environment.CurrentDirectory;
            DialogResult dr = fd.ShowDialog();
            if (dr == DialogResult.OK || dr == DialogResult.Yes)
            {
                System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
                {
                    Definitions.SetPaths[Convert.ToInt32(setPaths.FileNumbers) - 1].FilePaths = fd.FileName;
                }));
            }
            else
            {
                MessageBox.Show("请选择文件");

            }

        }

        //public void submits()
        //{
        //    MessageBox.Show("修改");
        //}
    }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值