最近做的一个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文件夹下面,就会提示编译错误:找不到资源文件。 部分截图如下: &lt;Window.Resources&gt; &lt;ResourceDictionary&gt; &lt;ResourceDictionary.M...
1.首先必须创建对应的文件夹:Views和 ViewModel s,分别用来存放我们的view和 viewmodel 我们的窗口叫HelloView,存放在Views文件夹 ,对应的 ViewModel 命名必须叫:Hello ViewModel ,且存放在 ViewModel s文件夹 。也就是和对应的view在名称上只多了一个Model,这个是使用Prism的一个命名约定。 2.在HelloVi...
&lt; DataGrid .Columns&gt; &lt; DataGrid TemplateColumn&gt; &lt; DataGrid TemplateColumn.CellTemplate&gt; &lt;DataTemplate&gt;
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 进行 数据 绑定 的基本步骤。需要注意的是,我们可以使用不同的 数据 源和不同的列类型来实现更加复杂的 数据 绑定