首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF绑定到XamDataGrid中的父对象

WPF绑定到XamDataGrid中的父对象
EN

Stack Overflow用户
提问于 2021-08-27 14:45:01
回答 2查看 308关注 0票数 0

我继承了一个使用WPF的遗留项目。我们利用了不脆弱学。下面是一个组成的类结构:

代码语言:javascript
复制
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}"

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

代码语言:javascript
复制
<igDP:Field Name="DogName " Label="Dog Name" AllowEdit="False" />

我希望更改标签来自DogsVM,并选择字段ViewName

如果我做了

代码语言:javascript
复制
<igDP:Field Name="DogName " Label="{Binding ViewName}" AllowEdit="False" />

DogName输出的asI正在查看Dog对象,而不是DogsVM对象。如何到达标签绑定中的父对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-28 07:08:14

在“不碎片”网站上,对于类似的问题有以下解释:

XamDataGrid中的字段不是WPF中的可视元素,因此不能直接绑定到数据上下文,因为它们不公开从FrameworkElement继承的数据上下文。 为了绑定XamDataGrid的非可视元素(如FieldFieldSettingsFieldLayoutSettings )的属性,我建议使用FieldBinding。您可以在FieldBindingXamDataGridhttps://www.infragistics.com/help/wpf/xamdatagrid-binding-field-fieldlayout-to-mvvm.中了解到

因此,建议在不碎片整理站点上使用FieldBinding标记扩展,以便将属性绑定到FieldFieldSettingsFieldLayoutSettings

虽然前面提到的post包含使用MVVM模式的示例,但是FieldBinding标记扩展可以不用它使用。

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

代码语言:javascript
复制
public YouWindowConstructor()
{        
    InitializeComponent();
    DataContext = new DogsVM();
}

现在,DataSource XamDataGrid 设置,并使用 FieldBinding 标记扩展:

代码语言:javascript
复制
<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

票数 0
EN

Stack Overflow用户

发布于 2021-08-28 02:59:42

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68955359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档