C# 如何访问DataGridRow.CellStyle中DataGrid ItemsSource对象的属性?

C# 如何访问DataGridRow.CellStyle中DataGrid ItemsSource对象的属性?,c#,wpf,xaml,binding,datagrid,C#,Wpf,Xaml,Binding,Datagrid,首先,让我向您展示我的课程: public class Model { public Model Parent {get; set;} public ObservableCollection<Model> Childs {get; set;} public ObservableCollection<Partner> Partners {get; set;} public bool IsTopElement => Parent == n


首先,让我向您展示我的课程:

public class Model
{
    public Model Parent {get; set;}
    public ObservableCollection<Model> Childs {get; set;}
    public ObservableCollection<Partner> Partners {get; set;}
    public bool IsTopElement => Parent == null;
}

public class Partner
{
    public bool IsActive {get; set;}
    public string PartnerRole {get; set;}
    public bool IsCustomer => PartnerRole == "Customer"
}
我现在面临的问题是,在MultiDataTrigger的第二个条件下,我无法访问DataGrid中
Partner
对象的属性
IsCustomer
。那么我怎样才能访问那里的这个属性呢?另外,在第一种情况下,我不希望访问
Model
IsTopElement
属性,因为DataGrid的ItemsSource绑定到
Partners
,但显然我有,这让我很困惑。

任何帮助都将不胜感激。如果您需要更多信息,请告诉我。
DataGridCell
DataContext
是一个
合作伙伴
对象。您可以使用
{RelativeSource}
绑定到父
UserControl
DataContext
。试试这个:

<Style TargetType="{x:Type DataGridCell}">
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding DataContext.IsTopElement, RelativeSource={RelativeSource AncestorType=UserControl}}" Value="False"/>
                <Condition Binding="{Binding IsCustomer}" Value="True"/>
            </MultiDataTrigger.Conditions>
            <Setter Property="IsEnabled" Value="False"/>
        </MultiDataTrigger>
    </Style.Triggers>
</Style>


谢谢您的回答!然而,我想你误解了什么。给我带来麻烦的不是
Model
IsTopElement
属性,而是DataGridRow中
Partner
对象的
IsCustomer
属性,我无法访问该属性。不过我试过你的方法。不幸的是,
对我的第二个条件不起作用。VS表示无法解析
DataContext.IsCustomer
。我可以运行应用程序,但没有达到预期的行为。您如何知道哪个属性给您带来了麻烦?合作伙伴没有任何模型属性,那么为什么您的第一个绑定可以工作呢?这里您没有给出全部情况……因为Partner类有一个iCustomer属性,所以您应该能够直接绑定到这个属性,就像我向您展示的那样。怎么样?由于Partners和IsTopElement属于同一类,因此应该可以工作。至少在你发布的代码中。根据您提供的信息,您的问题是不可复制的。我进一步考虑了您的建议,并将AncestorType更改为
DataGridRow
完成了以下操作:)我知道这必须是第二个无法工作的绑定,因为如果没有它,Checkboscolumn将按需要禁用。我编辑了你的答案,并接受了它。再次感谢你的帮助!
<Style TargetType="{x:Type DataGridCell}">
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding DataContext.IsTopElement, RelativeSource={RelativeSource AncestorType=UserControl}}" Value="False"/>
                <Condition Binding="{Binding IsCustomer}" Value="True"/>
            </MultiDataTrigger.Conditions>
            <Setter Property="IsEnabled" Value="False"/>
        </MultiDataTrigger>
    </Style.Triggers>
</Style>