我继承了一个使用WPF的遗留项目。我们使用Infragistics。
下面是一个组成的类结构:
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是DataSource="{Binding CollectionView}"
。
当我输出字段时,我使用以下命令
<igDP:Field Name="DogName " Label="Dog Name" AllowEdit="False" />
我想改变标签从DogsVM
和选择字段ViewName
如果我做
<igDP:Field Name="DogName " Label="{Binding ViewName}" AllowEdit="False" />
DogName被输出,因为我正在查看Dog
对象,而不是DogsVM
对象。我怎样才能到达标签绑定中的父对象?
2条答案
按热度按时间t5fffqht1#
所以你有一个名为CollectionView的对象。该对象是XamDataGrid的DataContext。您应该向 that 同一个对象添加一个字符串属性,该对象具有您要用于该字段标签的值。然后使用FieldBinding将字段的属性绑定到该属性。如果该对象是DogsVM类,并且您没有在那里显示CollectionView,那么它将类似于
{FieldBinding ViewName}
。8hhllhi22#
On the Infragistics site there is the following explanation for a similar problem:
XamDataGrid
中的字段不是WPF中的可视元素,因此不能直接绑定到数据上下文,因为它们不公开从FrameworkElement
继承的数据上下文。为了绑定
XamDataGrid
的非视觉元素的属性,如Field
,FieldSettings
或FieldLayoutSettings
,我建议使用FieldBinding
。您可以在XamDataGrid
中阅读有关FieldBinding
的信息:https://www.infragistics.com/help/wpf/xamdatagrid-binding-field-fieldlayout-to-mvvm.因此,在Infragistics网站上建议使用
FieldBinding
标记扩展,以便将属性绑定到Field
,FieldSettings
或FieldLayoutSettings
。虽然提到的帖子包括使用MVVM模式的示例,但
FieldBinding
标记扩展可以不使用它。与上述问题相关,请考虑在构造函数中设置
DataContext
:现在为
XamDataGrid
设置DataSource
,并使用FieldBinding
标记扩展:参见类似内容:https://stackoverflow.com/a/64545966/6630084