2013-03-14 147 views
1

我有一个类“A”。 这个类A有一个对象B.绑定到对象的属性

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

我尝试这样做:

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

我的问题是有没有出现任何价值。

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

我该如何在xaml中简单地做到这一点?

+0

我没有看到xaml的问题,除了绑定的空间盈方之外。请向我们展示您的课程A和B。 – dowhilefor 2013-03-14 14:42:09

回答

1

你可以用这个语法尝试

{Binding ElementName=B, Path=strDes} 

注:请不要忘记源

DataContext="{Binding Source=yourData}" 
+0

非常感谢您的提示! – 2013-03-14 15:52:19

+0

我很乐意为您效劳Walter – 2013-03-14 15:56:17

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> 

CodeBe后:

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++; 
    } 
} 

输出:

enter image description here

编辑: 有淡淡的检查你的绑定。将TraceLevel设置为“High”以获得更多关于它的信息:

<DataGridTextColumn Binding="{ Binding B.strDes, PresentationTraceSources.TraceLevel=High}" Header=" Libellé type évènement " Width="Auto" IsReadOnly="True" />  
+0

嗨,非常感谢您的回答! – 2013-03-14 15:52:41