大佬教程收集整理的这篇文章主要介绍了MVVM DataGrid ComboBox SelectedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@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
模型都绑定到 ComboBox
的 SELEctItem,
当在 ComboBox
中选择了“DepartmentCode”时,“DepartmentName”会自动绑定。
以上是大佬教程为你收集整理的MVVM DataGrid ComboBox SelectedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml全部内容,希望文章能够帮你解决MVVM DataGrid ComboBox SelectedValue Bindfing 模型 - 员工(第一个数据网格)模型 - 部门(第二个数据网格)视图模型MainView.xaml所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。