程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了MVVM DataGrid ComboBox SelectedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决MVVM DataGrid ComboBox SELEctedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml?

开发过程中遇到MVVM DataGrid ComboBox SELEctedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml的问题如何解决?下面主要结合日常开发的经验,给出你关于MVVM DataGrid ComboBox SELEctedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml的解决方法建议,希望对你解决MVVM DataGrid ComboBox SELEctedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml有所启发或帮助; @H_502_0@我有 2 个数据网格,我希望在第一个数据网格上有一个带有第二个数据网格的集合的组合框 当我从组合框中选择一个值时,该值将放入第一个数据网格。

@H_502_0@在我的情况下,当我从组合框中选择一种材料时,我希望自动放置 CoefD 列。 这是我的代码。

@H_502_0@当我保存文件并想打开所选的材料时,我想留在那里。

@H_502_0@Picture with the program datagrids Click

@H_502_0@模型:Tname(第一个数据网格)

public class TMaterial : Changed
    {
        public String name;
        public String color;
        private String materialn;
        private String coefDn;
        private String nameDraw;
        private String drawPath;
        

        public String name
        {
            get { return name; }
            set
            {
                if (name != value)
                {
                    name = value;
                    RaisePropertyChanged("name");
                }
            }
        }
        
        public String color
        {
            get { return color; }
            set
            {
                if(color != value)
                {
                    color = value;
                    RaisePropertyChanged("color");
                }
            }
        }

        

        public String Materialn
        {
            get { return materialn; }

            set
            {
                if (materialn != value)
                {
                    materialn = value;
                    RaisePropertyChanged("Materialn");
                }
            }
        }

        public String CoefDn
        {
            get { return coefDn; }

            set
            {
                if (coefDn != value)
                {
                    coefDn = value;
                    RaisePropertyChanged("CoefDn");
                }
            }
        }
        public String nameDraw
        {
            get { return nameDraw; }

            set
            {
                if (nameDraw != value)
                {
                    nameDraw = value;
                    RaisePropertyChanged("nameDraw");
                }
            }
        }

        public String DrawPath
        {
            get { return drawPath; }

            set
            {
                if (drawPath != value)
                {
                    drawPath = value;
                    RaisePropertyChanged("DrawPath");
                }
            }
        }


        public overrIDe String ToString()
        {
            return name;
        }
}
@H_502_0@模型:TMaterial(第二个数据网格)

public class TMaterial : Changed
    {
        private String material;
        private String coefD;

        public String Material
        {
            get { return material; }

            set
            {
                if(material != value)
                {
                    material = value;
                    RaisePropertyChanged("Material");
                }
            }
        }

        public String CoefD
        {
            get { return coefD; }

            set
            {
                if(coefD != value)
                {
                    coefD = value;
                    RaisePropertyChanged("CoefD");
                }
            }
        }
    }
@H_502_0@视图模型:

public  class Addnameviewmodel : Changed
    {
        private Tname tnm;
        
        private ObservableCollection<Tname> _dimensionname;
        private ObservableCollection<TMaterial> _materials;
        public Addnameviewmodel()
        {
            Dimensionname = new ObservableCollection<Tname>
            {
                new Tname{ name="All"},};

            

            Materials = new ObservableCollection<TMaterial>
            {
                new TMaterial{Material="Aluminium",CoefD="23.1"},new TMaterial{ Material="Brass",CoefD="19"},new TMaterial{ Material="Carbon Steel",CoefD="10.8"},new TMaterial{ Material="Concrete",CoefD="12"},new TMaterial{ Material="PlaTinum",CoefD="9"},new TMaterial{ Material="Iron",CoefD="11.8"},};

            
        }
        
        public ObservableCollection<TMaterial> Materials
        {
            get { return _materials; }

            set
            {
                if (_materials != value)
                {
                    _materials = value;
                    RaisePropertyChanged("Materials");
                }
            }
        }

        public ObservableCollection<Tname> Dimensionname
        {
            get { return _dimensionname; }
            set
            {
                if (_dimensionname != value)
                {
                    _dimensionname = value;
                    RaisePropertyChanged("Dimensionname");
                }
            }
        }
        
        private Tname sdimensionname;
        private TMaterial smaterials;
        public Tname SDimensionname
        {
            get { return sdimensionname; }
            set
            {
                if (sdimensionname != value)
                {
                    sdimensionname = value;
                    RaisePropertyChanged("SDimensionname");
                }
            }
        }

        public TMaterial smaterials
        {
            get { return smaterials; }

            set
            {
                if (smaterials != value)
                {
                    smaterials = value;
                    RaisePropertyChanged("smaterials");
                }
            }
        }
        
        
    }
@H_502_0@查看 XAML DG:

<GrID name="GrIDC" margin="0,-203" >
        <DataGrID CanUserAddRows="True"  CurrentCellChanged="nameDataGrID_CurrentCellChanged" autoGeneratecolumns="false" Itemssource="{Binding Dimensionname,NotifyOnsourceupdated=TruE}" RowEditEnding="nameDataGrID_RowEditEnding" name="nameDataGrID" HorizontalAlignment="left"  VerticalAlignment="top" Loaded="nameGrID_Load" margin="0,25,0"  Height="auto" WIDth="auto" >
            <DataGrID.columns >
                <DataGrIDTextcolumn  header="name" Binding="{Binding name,Mode=TwoWay}">
                    <DataGrIDTextcolumn.ElementStyle>
                        <Style targettype="{x:Type TextBlock}">
                            <Setter Property="BACkground" Value="{Binding color}"/>
                        </Style>
                    </DataGrIDTextcolumn.ElementStyle>
                </DataGrIDTextcolumn>
                <DataGrIDTemplatecolumn header="color">
                    <DataGrIDTemplatecolumn.CellTemplate>
                        <DataTemplate>
                            <xctk:colorPicker  SELEctedcolorChanged="colorPicker_SELEctedcolorChanged" BACkground="{Binding color}" SELEctedcolor="{Binding color,Mode=TwoWay,updatesourcetrigger=PropertyChangeD}"/>
                        </DataTemplate>
                    </DataGrIDTemplatecolumn.CellTemplate>
                </DataGrIDTemplatecolumn>
                
                <DataGrIDTemplatecolumn header="Material">
                    <DataGrIDTemplatecolumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox SELEctionChanged="ComboBox_SELEctionChanged"
                            WIDth="150"
                            IsEditable="True"
                            IsDropDownopen="false"
                            Itemssource="{Binding 
                                Path = DataContext.Materials,relativesource={relativesource AncestorType={x:Type UserControl}}}"
                            displaymemberPath="Material"
                                                                                     
                            SELEctedItem="{Binding smaterials}"
                            IsReadonly="True"
                             >
                            </ComboBox>
                        </DataTemplate>
                    </DataGrIDTemplatecolumn.CellTemplate>
                </DataGrIDTemplatecolumn>

                <DataGrIDTextcolumn  IsReadonly="false" header="Coef"  Binding="{Binding smaterials.CoefD,NotifyOnsourceupdated =TruE}"/>
                <DataGrIDTextcolumn IsReadonly="True" header="Drawing number" Binding="{Binding nameDraw,Mode=TwoWay}">
                    <DataGrIDTextcolumn.CellStyle>
                        <Style targettype="DataGrIDCell">
                            <Setter Property="tooltip">
                                <Setter.Value>
                                    <Image RenderOptions.bitmapScalingMode="Fant" WIDth="350" Height="350" source="{Binding DrawPath}"/>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </DataGrIDTextcolumn.CellStyle>
                </DataGrIDTextcolumn>

                <DataGrIDTemplatecolumn>

                    <DataGrIDTemplatecolumn.CellTemplate>

                        <DataTemplate>

                            <button Content="Add Drawing" Click="AddDrawing_Click_1"/>

                        </DataTemplate>

                    </DataGrIDTemplatecolumn.CellTemplate>

                </DataGrIDTemplatecolumn>
                <DataGrIDTemplatecolumn>

                    <DataGrIDTemplatecolumn.CellTemplate>

                        <DataTemplate>

                            <button x:name="delet" Click="delete_Click_1">
                                <StackPanel>
                                    <Image source="/Image/delete2.jpg" WIDth="20" Height="20"/>
                                </StackPanel>
                            </button>

                        </DataTemplate>

                    </DataGrIDTemplatecolumn.CellTemplate>

                </DataGrIDTemplatecolumn>
            </DataGrID.columns>

        </DataGrID>
</GrID>

解决方法

首先请您理解,这是我制作的示例代码,而不是您使用的代码。
整个源代码位于 Github 中。

模型 - 员工(第一个数据网格)

public class employees
{
    public String Name { get; set; }
    public int age { get; set; }
    public Department Department { get; set; }
}

模型 - 部门(第二个数据网格)

public class Department
{
    public String DepartmentCode { get; set; }
    public String DepartmentName { get; set; }
}

将你想要绑定的模型(Department)作为employee类中的一个变量。

视图模型

public class MainViewModel : ObservabLeobject
{
    private ObservableCollection<employees> _employees;
    public ObservableCollection<employees> employees
    {
        get { return _employees; }
        set { _employees = value; OnPropertyChanged(); }
    }

    private ObservableCollection<Department> _departments;
    public ObservableCollection<Department> Departments
    {
        get { return _departments; }
        set { _departments = value; OnPropertyChanged(); }
    }

    private String _departmentName;
    public String DepartmentName
    {
        get { return _departmentName; }
        set { _departmentName = value; OnPropertyChanged(); }
    }

    public MainViewModel()
    {
        employees = Getemployees();
        Departments = GetDepartments();
    }

    private ObservableCollection<employees> Getemployees()
    {
        ObservableCollection<employees> employees = new ObservableCollection<employees>
        {
            new employees { Name = "James",Age = 30 },new employees { Name = "Elena",Age = 26 },new employees { Name = "Rookie",Age = 38 }
        };
        return employees;
    }

    private ObservableCollection<Department> GetDepartments()
    {
        ObservableCollection<Department> departments = new ObservableCollection<Department>
        {
            new Department { DepartmentCode = "0001",DepartmentName = "Develop" },new Department { DepartmentCode = "0002",DepartmentName = "MarkeTing" },new Department { DepartmentCode = "0003",DepartmentName = "HR" }
        }; 
        return departments;
    }
}
@H_825_0@mainView.xaml
<Grid VerticalAlignment="Top">
    <Grid.columnDefinitions>
        <columnDefinition Width="3*"/>
        <columnDefinition Width="2*"/>
    </Grid.columnDefinitions>
        
    <DataGrid AutoGeneratecolumns="false" SELEctionMode="Single" CanUserAddRows="false"
                Itemssource="{Binding employees}" Grid.column="0" AlternaTingRowBACkground="#F1F1F1" Height="100">
        <DataGrid.columns>
            <DataGridTextcolumn Header="Name" Binding="{Binding NamE}" IsReadOnly="True" Width="70"/>
            <DataGridTextcolumn Header="Age" Binding="{Binding AgE}" IsReadOnly="True" Width="50"/>
            <DataGridComboBoxcolumn Header="DepartmentCode" SELEctedItemBinding="{Binding Department,updatesourcetrigger=PropertyChangeD}"
                                    DisplaymemberPath="DepartmentCode" Width="120">
                <DataGridComboBoxcolumn.ElementStyle>
                    <Style TargetType="{x:Type ComboBox}">
                        <Setter Property="Itemssource" Value="{Binding Relativesource={Relativesource AncestorType=UserControl},Path=DataContext.Departments}"/>
                    </Style>
                </DataGridComboBoxcolumn.ElementStyle>
                <DataGridComboBoxcolumn.EdiTingElementStyle>
                    <Style TargetType="{x:Type ComboBox}">
                        <Setter Property="Itemssource" Value="{Binding Relativesource={Relativesource AncestorType=UserControl},Path=DataContext.Departments}"/>
                    </Style>
                </DataGridComboBoxcolumn.EdiTingElementStyle>
            </DataGridComboBoxcolumn>
            <DataGridTextcolumn Header="DepartmentName" Binding="{Binding Department.DepartmentNamE}" IsReadOnly="True" Width="*"/>
        </DataGrid.columns>
    </DataGrid>

    <DataGrid AutoGeneratecolumns="false" SELEctionMode="Single" CanUserAddRows="false"
                Itemssource="{Binding Departments}" Grid.column="1" Width="250" AlternaTingRowBACkground="#F1F1F1">
        <DataGrid.columns>
            <DataGridTextcolumn Header="Code" Binding="{Binding DepartmentCodE}" IsReadOnly="True" Width="100"/>
            <DataGridTextcolumn Header="Name" Binding="{Binding DepartmentNamE}" IsReadOnly="True" Width="*"/>
        </DataGrid.columns>
    </DataGrid>
</Grid>

由于整个 Department 模型都绑定到 ComboBoxSELEctItem,
当在 ComboBox 中选择了“DepartmentCode”时,“DepartmentName”会自动绑定。

大佬总结

以上是大佬教程为你收集整理的MVVM DataGrid ComboBox SelectedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml全部内容,希望文章能够帮你解决MVVM DataGrid ComboBox SelectedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:-模型