1

我有一个“A”类。这个类 A 有一个对象 B。

我有一个数据网格。在这个数据网格上,我绑定了几个 A 属性。我想另外绑定一个 B 属性。

我试过这个:

<DataGridTextColumn Binding="{ Binding B.strDes}" Header="   Libellé type évènement   " Width="Auto" IsReadOnly="True"  />

我的问题是没有显示价值。

B 是对象属性,strDes 是 B 属性。

请问我怎样才能简单地在xaml中做到这一点?

4

2 回答 2

1

您可以尝试使用此语法

{Binding ElementName=B,  Path=strDes}

注意:不要忘记来源

DataContext="{Binding Source=yourData}"
于 2013-03-14T15:06:25.220 回答
1

我试过你的例子,它工作正常:

XAML:

<Window x:Class="DataGridBinding.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid ItemsSource="{Binding ObjectAList}">      
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{ Binding ObjectB.strDes}" Header="   Libellé type évènement   " Width="Auto" IsReadOnly="True"  />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

代码隐藏:

public partial class MainWindow : Window
{
   public List<A> AList { get; set; }

   public MainWindow()
   {
      InitializeComponent();
      AList= new List<A>();
      AList.Add(new A());
      AList.Add(new A());
      AList.Add(new A());
      AList.Add(new A());
      DataContext = this;
   }
}

A类和B类:

public class A
{
   public B B { get; set; }

   public A()
   {
      B=new B();
   }
}

public class B
{
   private static int counter = 0;
   public string strDes { get; set; }

   public B()
   {
      strDes = "foo"+counter;
      counter++;
   }
}

输出:

在此处输入图像描述

编辑:检查绑定的提示。将 TraceLevel 设置为“High”以获取有关它的更多信息:

<DataGridTextColumn Binding="{ Binding B.strDes, PresentationTraceSources.TraceLevel=High}" Header="   Libellé type évènement   " Width="Auto" IsReadOnly="True"  />    
于 2013-03-14T15:12:01.290 回答