最近做的一个View中的DataGrid控件,绑定到了ViewModel中的一个ObservableCollection集合。显然,每一行对应了集合中的每一个对象,每一列对应了集合中的对象的每一个属性。但是有些列,我希望绑定到其他源去,而不是和对象的属性死绑到一起。
比如这是一个表示很多高压柜的表,有一列是高压柜的族的属性,用的是ComboBox控件,之前没有想到更好的办法,不知道如何绑定到其他源,没有办法之下,每一个高压柜的MockViewModel都用设置了一个属性,是一个集合,用来存储族的集合。但是每New一个高压柜,都需要重新获取这个集合,显然不对。
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding HVFamilySymbols}"
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
终于找到方法,如何绑定到其他层级的数据源。
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.HVFamilySymbols,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
需要注意的是:指定了相对资源为Window,因为后台写了代码this.DataContext=viewmodel;而HVFamilySymbol是viewmodel的属性,而不是Window的属性,所以Path必须要加上DataContext,用来指定具体。
最近做的一个View中的DataGrid控件,绑定到了ViewModel中的一个ObservableCollection集合。显然,每一行对应了集合中的每一个对象,每一列对应了集合中的对象的每一个属性。但是有些列,我希望绑定到其他源去,而不是和对象的属性死绑到一起。比如这是一个表示很多高压柜的表,有一列是高压柜的族的属性,用的是ComboBox控件,之前没有想到更好的办法,不知道如何绑定到其他...
WPF
下
DataGrid
每行设置不同的
Com
bo
Box
的
数据
绑定
DataGrid
设置一次ItemSource
每个
Com
bo
Box
也要设置一次ItemSource
有点像通过两次映射来
绑定
WPF
的
DataGrid
全选
绑定
界面
Viewmodel
,
datagrid
templatecolumn的datatemplate
里
绑定
Viewmodel
里
的
数据
源而非ItemSource
里
面的
数据
源
DeviceType
ViewModel
deviceTypeModel = new DeviceType
ViewModel
();
this.parentIdTxt.ItemsSource = deviceTypeModel.GetDeviceType().DefaultView;
this.parentIdTxt.DisplayMemberPa...
/// </summary>
public string StatisticalDate { get; set; }
public List<ReportDetail> ReportDetails { get; set; }
publi
wpf
DataGrid
主从表,
DataGrid
嵌套
DataGrid
主从结构rowdetailtemplate实现,
绑定
DataTable
数据
源,使用Visual Studio 2017 .
子表
绑定
DataTable
数据
源不用转换轻松实现..
虽然实现了功能,但还有错误,实现显示收缩子表时有闪烁,这与dataset
数据
库查询慢有关,选择行的单元格时常不能编辑,这和子表的显示折叠不知
问题描述:新建类库项目,然后添加了
WPF
窗口,以及资源字典。若资源字典放在根目录,即不放入文件夹下面,则不会出错。若是放到比如Themes文件夹下面,就会提示编译错误:找不到资源文件。
部分截图如下:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.M...
1.首先必须创建对应的文件夹:Views和
ViewModel
s,分别用来存放我们的view和
viewmodel
我们的窗口叫HelloView,存放在Views文件夹
中
,对应的
ViewModel
命名必须叫:Hello
ViewModel
,且存放在
ViewModel
s文件夹
中
。也就是和对应的view在名称上只多了一个Model,这个是使用Prism的一个命名约定。
2.在HelloVi...
<
DataGrid
.Columns>
<
DataGrid
TemplateColumn>
<
DataGrid
TemplateColumn.CellTemplate>
<DataTemplate>
WPF
中
的
DataGrid
是一个非常强大的控件,可以用于显示和编辑
数据
。在
WPF
中
,
数据
绑定
是非常重要的,因为它可以使我们更加方便地将
数据
从
数据
源
绑定
到控件。
以下是在
WPF
中
使用
DataGrid
进行
数据
绑定
的步骤:
1. 创建
数据
源
首先,我们需要创建一个
数据
源,可以是一个集合,也可以是一个DataTable。例如,我们可以创建一个名为“myData”的DataTable:
DataTable myData = new DataTable();
myData.Columns.Add("Name", typeof(string));
myData.Columns.Add("Age", typeof(int));
myData.Rows.Add("Tom", 20);
myData.Rows.Add("Jerry", 30);
2. 设置
DataGrid
的ItemsSource
属性
接下来,我们需要将
DataGrid
的ItemsSource
属性
设置为我们的
数据
源,如下所示:
my
DataGrid
.ItemsSource = myData.DefaultView;
3. 设置
DataGrid
列
我们需要为
DataGrid
设置列,让它可以正确地显示我们的
数据
。可以通过XAML或代码来设置列。以下是在代码
中
设置列的示例:
DataGrid
TextColumn nameColumn = new
DataGrid
TextColumn();
nameColumn.Header = "Name";
nameColumn.Binding = new Binding("Name");
my
DataGrid
.Columns.Add(nameColumn);
DataGrid
TextColumn ageColumn = new
DataGrid
TextColumn();
ageColumn.Header = "Age";
ageColumn.Binding = new Binding("Age");
my
DataGrid
.Columns.Add(ageColumn);
4. 运行程序
现在我们已经完成了
数据
绑定
,可以运行程序并查看
DataGrid
中
的
数据
了。
以上就是在
WPF
中
使用
DataGrid
进行
数据
绑定
的基本步骤。需要注意的是,我们可以使用不同的
数据
源和不同的列类型来实现更加复杂的
数据
绑定
。