WPF 绑定到 XamDataGrid 中的父对象

问题描述 投票:0回答:2

我继承了一个使用WPF的遗留项目。我们利用基础设施。

下面是一个虚构的类结构:

public class DogsVM
{
    public string ViewName { get; set; } = "My Dogs";
    public List<Dog> Dogs { get; set; }
}

public class Dog
{
    public string DogName { get; set; }
    public string Description { get; set; }
}

我正在使用

XamDataGrid
显示我的数据。

目前

XamDataGrid
上的数据源是
DataSource="{Binding CollectionView}"

当我输出字段时,我使用以下内容

<igDP:Field Name="DogName " Label="Dog Name" AllowEdit="False" />

我希望将标签更改为

DogsVM
并选择字段
ViewName

如果我这样做

<igDP:Field Name="DogName " Label="{Binding ViewName}" AllowEdit="False" />
当我查看

Dog 对象时,会输出

DogName
,而不是
DogsVM
对象。如何获取标签绑定中的父对象?

wpf xaml infragistics legacy-code xamdatagrid
2个回答
1
投票

因此,您有一些具有名为 CollectionView 属性的对象。该对象是 XamDataGrid 的 DataContext。您应该将一个字符串属性添加到 that 同一对象,该对象具有要用于该字段标签的值。然后使用 FieldBinding 将字段的属性绑定到该属性。如果该对象是 DogsVM 类,并且您只是不在那里显示 CollectionView 那么它将类似于

{FieldBinding ViewName}


0
投票

Infragistics 网站上对类似问题有以下解释:

XamDataGrid

 中的字段不是 WPF 中的可视元素,因此
不能直接绑定到数据上下文,因为它们不公开数据上下文
继承自
FrameworkElement

为了绑定非可视元素的属性

XamDataGrid

 例如 
Field
FieldSettings
FieldLayoutSettings
,我
建议使用
FieldBinding
。您可以阅读有关
FieldBinding
XamDataGrid
这里:
https://www.infragistics.com/help/wpf/xamdatagrid-binding-field-fieldlayout-to-mvvm。

因此,在 Infragistics 站点上建议使用

FieldBinding

 标记扩展,以便将属性绑定到 
Field
FieldSettings
FieldLayoutSettings
虽然提到的帖子包含使用 MVVM 模式的示例,但无需它即可使用
FieldBinding
 标记扩展。

与上面的问题相关,考虑在构造函数中设置DataContext

public YouWindowConstructor() { InitializeComponent(); DataContext = new DogsVM(); }

现在为 DataSource

 设置 
XamDataGrid
 并使用 
FieldBinding
 标记扩展:

<igDP:XamDataGrid DataSource="{Binding Path=Dogs}" AutoFit="True"> <igDP:XamDataGrid.FieldLayoutSettings> ... <igDP:XamDataGrid.FieldLayouts> <igDP:FieldLayout> <igDP:FieldLayout.Fields> ... <igDP:Field Name="DogName" Label="{igDP:FieldBinding ViewName}" AllowEdit="False" /> ... </igDP:FieldLayout.Fields> </igDP:FieldLayout> </igDP:XamDataGrid.FieldLayouts> </igDP:XamDataGrid>
参见类似:

https://stackoverflow.com/a/64545966/6630084

© www.soinside.com 2019 - 2024. All rights reserved.