首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

WPF中datagrid嵌套datagrid,数据绑定有关问题

2013-12-05 
WPF中datagrid嵌套datagrid,数据绑定问题大家好,我现在用DataGrid嵌套ListBox,ListBox的ItemsSource是通过

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;

热点排行