WPF中datagrid嵌套datagrid,数据绑定问题
大家好,我现在用DataGrid嵌套ListBox,ListBox的ItemsSource是通过转换器将字符串转换为DataView,现在出现的问题是ListBox的ItemsSource是不同的,但是ListBox里的TextBlock的text值是一样的。我想通过ListBox的ItemsSource的不同让TextBlock显示不同的数据.
<DataGrid Name="FileDataGrid" AutoGenerateColumns="False" Grid.Row="0" Grid.ColumnSpan="2" Grid.RowSpan="2" CanUserAddRows = "false">
<DataGrid.Columns>
<DataGridTemplateColumn IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding senderName}"></TextBlock>
<TextBlock Margin="5 0 0 0" Grid.Column="1" Grid.Row="0" Text="{Binding sendTime,StringFormat='HH:mm:ss'}"/>
<ListBox Grid.Row="1" Grid.ColumnSpan="2" ItemsSource="{Binding message,Converter={StaticResource imageSourceconverter}}" ScrollViewer.CanContentScroll="False">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"></VirtualizingStackPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding url}"></TextBlock></DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
[解决办法]
建议你绑定数据的时候,直接给ListBox绑定实体集合,而不是经过转换的实体集合。
相当于给GridView绑定的实体集合的每个实体内部都有一个给ListBox绑定的实体集
[解决办法]
分页呗。其实他从服务器获取下来的速度其实是很快的,但是当页面解析的时候就慢了
[解决办法]
你是不是想让多个不同的集合分别显示在不同的ListView中;
那你应该吧多个集合添加到一个大的集合里,这个集合对象的属性就是ListView需要绑定的集合,让DataGrid的ItemSource绑定这个大的集合;然后让ListView绑定大集合的属性;
public class DataGridModel
{
private List<ListViewModel> listViewModels = new List<ListViewModel>();
public List<ListViewModel> ListViewModels
{
get { return listViewModels; }
set { listViewModels = value; }
}
}
public class ListViewModel
{
public int Age { get; set; }
public string Name { get; set; }
}
List<DataGridModel> DataGridItemSource = new List<DataGridModel>();
dataGrid.ItemSource=DataGridItemSource;