Datagrid MVVM数据网格嵌套
我有一个数据网格,在其中我必须显示一个图像和一个必须显示消息的数据网格。我可以绑定父数据网格并显示图像,但是内部数据网格没有绑定,也没有显示任何错误 我遗漏了什么吗?这是我的xamlDatagrid MVVM数据网格嵌套,datagrid,nested,Datagrid,Nested,我有一个数据网格,在其中我必须显示一个图像和一个必须显示消息的数据网格。我可以绑定父数据网格并显示图像,但是内部数据网格没有绑定,也没有显示任何错误 我遗漏了什么吗?这是我的xaml <DataGrid Grid.Column="0" AutoGenerateColumns="False" Width="Auto" ItemsSource="{Binding Col1}" ScrollViewer.VerticalScrollBarVisibility="Auto">
<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集合绑定到父数据源,该数据可用于所有其他控件 我认为您误解了什么是绑定,在您的示例中,绑定表达式不完整:
ItemsSource=“{binding}”
正如您在评论中所说,Col1
是一个可观察的集合
。有趣的是这个类本身,但无论如何
将Col1绑定到父数据网格时,类的属性可供子控件绑定(对于集合中的每个项)。如果MyCollectionClass中再次没有这样的Col1属性,则无法将其绑定到内部DataGrid
假设您有以下类(简化):
对于集合中类的每个实例,在DataGrid中都有一行Firstname和Lastname,因为它们是类的公共属性。但是对于Col1不是这样。我认为您误解了什么是绑定,在您的示例中,绑定表达式不完整:
ItemsSource=“{binding}”
正如您在评论中所说,Col1
是一个可观察的集合
。有趣的是这个类本身,但无论如何
将Col1绑定到父数据网格时,类的属性可供子控件绑定(对于集合中的每个项)。如果MyCollectionClass中再次没有这样的Col1属性,则无法将其绑定到内部DataGrid
假设您有以下类(简化):
对于集合中类的每个实例,在DataGrid中都有一行Firstname和Lastname,因为它们是类的公共属性。但是不能使用Col1。您在内部数据网格上的绑定似乎不完整:
ItemsSource=“{binding}”
如果我提供与父网格相同的绑定,则表示绑定表达式错误……什么是“Col1”?你能在代码后面添加一些代码吗?Col1是我观察到的对象集合。。。public observeCollection Col1{get{return m_oCol1;}set{m_oCol1=value;OnPropertyChanged(()=>Col1);}}您在内部数据网格上的绑定似乎不完整:ItemsSource=“{binding}”
如果我给出与父网格相同的绑定,它会显示绑定表达式错误…什么是“Col1”?你能在代码后面添加一些代码吗?Col1是我观察到的对象集合。。。公共可观测集合Col1{get{return m_oCol1;}set{m_oCol1=value;OnPropertyChanged(()=>Col1);}}}thnx didiier。。。这帮了大忙。。我尝试保留单独的集合作为Col1的属性,并将其绑定到子网格。thnx Didier。。。这帮了大忙。。我尝试保留单独的集合作为Col1的属性,并将其绑定到子网格。
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