我继承了一个使用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来显示我的数据。
DataSource在XamDataGrid上是DataSource="{Binding CollectionView}"。
当我输出字段时,我使用以下内容
<igDP:Field Name="DogName " Label="Dog Name" AllowEdit="False" />我希望更改标签来自DogsVM,并选择字段ViewName
如果我做了
<igDP:Field Name="DogName " Label="{Binding ViewName}" AllowEdit="False" />DogName输出的asI正在查看Dog对象,而不是DogsVM对象。如何到达标签绑定中的父对象?
发布于 2021-08-28 07:08:14
XamDataGrid中的字段不是WPF中的可视元素,因此不能直接绑定到数据上下文,因为它们不公开从FrameworkElement继承的数据上下文。 为了绑定XamDataGrid的非可视元素(如Field、FieldSettings或FieldLayoutSettings)的属性,我建议使用FieldBinding。您可以在FieldBinding的XamDataGrid:https://www.infragistics.com/help/wpf/xamdatagrid-binding-field-fieldlayout-to-mvvm.中了解到
因此,建议在不碎片整理站点上使用FieldBinding标记扩展,以便将属性绑定到Field、FieldSettings或FieldLayoutSettings。
虽然前面提到的post包含使用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> 发布于 2021-08-28 02:59:42
因此,您有一个名为CollectionView的属性的对象。该对象是DataContext of XamDataGrid。应该向该对象添加字符串属性,该对象具有要用于该字段的标签的值。然后使用FieldBinding将字段的属性绑定到该属性。如果该对象是DogsVM类,而您只是没有在那里显示CollectionView,那么它将类似于{FieldBinding ViewName}。
https://stackoverflow.com/questions/68955359
复制相似问题