我有一个班级" A"。 这个A类有一个对象B。
我有一个数据网格。在这个数据网格上,我绑定了几个A属性。 我想再绑定一个B属性。
我试过了:
<DataGridTextColumn Binding="{ Binding B.strDes}" Header=" Libellé type évènement " Width="Auto" IsReadOnly="True" />
我的问题是没有显示值。
B是对象属性,strDes是B属性。
我怎样才能在xaml中做到这一点?
答案 0 :(得分:1)
您可以尝试使用此语法
{Binding ElementName=B, Path=strDes}
注意:不要忘记来源
DataContext="{Binding Source=yourData}"
答案 1 :(得分: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" />