我有一个数据网格,我必须在其中显示图像,并再次显示必须显示消息的datagris。我可以绑定父数据网格并显示图像,但内部数据网格没有绑定,也没有显示任何错误。
我错过了什么吗?这是我的xaml
<DataGrid Grid.Column="0" AutoGenerateColumns="False" Width="Auto" ItemsSource="{Binding Col1}" ScrollViewer.VerticalScrollBarVisibility="Auto">
<DataGrid.Columns>
<DataGridTemplateColumn Width="SizeToCells" Header="Column1" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<StackPanel Orientation="Vertical" >
<Image Source="{Binding ImagePathItem1}" Height="20" Width="20"/>
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Height="250" Width="250">
<DataGrid.Columns>
<DataGridTemplateColumn Width="SizeToCells" Header="Column2">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding MessageData}" Foreground="Orange"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Col1集合绑定到父数据源,数据可用于所有其他控件。
答案 0 :(得分:1)
我认为你错误解释了什么是绑定,在你的例子中,绑定表达式是不完整的:ItemsSource="{Binding}"
。
正如您在评论中所说,Col1
是ObservableCollection<MyCollectionClass>
。有趣的是,班级本身,但无论如何。
将 Col1 绑定到父DataGrid时,类控件的属性可用于绑定(对于集合中的每个项目)。如果 MyCollectionClass 中再次没有 Col1 属性,则无法将其绑定到内部DataGrid!
想象一下,你有以下课程(简化):
public class MyCollectionClass {
public string Firstname { get; set; }
public string Lastname { get; set; }
}
ObservableCollection<MyCollectionClass> Col1;
然后你可以用这种方式绑定:
ParentDataGrid: {Binding Col1)
TextBox: {Binding Firstname}
TextBox: {Binding Lastname}
InnerDataGrid: {Binding Col1} // You can't do that
对于集合中每个类的实例,您的DataGrid中将有一行名字和姓氏,因为它们是该类的公共属性。但不是 Col1 。