繁体   English   中英

WPF(MVVM)中telerik GridView(或其他列表视图)内的ListView

[英]ListView inside telerik GridView( or another listview ) in WPF(MVVM)

我在 GridView 中添加了一个 ListView

 <tel:RadGridView AutoGenerateColumns="False" x:Name="ModuleGrid" ItemsSource="{Binding ProjectList,Source={StaticResource TowersVM},Mode=TwoWay}" HorizontalAlignment="Stretch" ShowGroupPanel="False" ColumnWidth="*" ShowColumnHeaders="False" RowIndicatorVisibility="Collapsed" Height="500"> <tel:StyleManager.Theme> <tel:Windows8TouchTheme/> </tel:StyleManager.Theme> <tel:RadGridView.Columns> <tel:GridViewImageColumn Width="150" x:Name="Img" IsFilterable="False" DataMemberBinding="{Binding TowerImage}"/> <!--<tel:GridViewDataColumn Width="100" x:Name="Img" Header="" IsFilterable="False" DataMemberBinding="{Binding TowerImage}"/>--> <tel:GridViewColumn> <tel:GridViewColumn.CellTemplate> <DataTemplate> <ListView x:Name="TemplateList" ItemsSource="{Binding UnitTypesList,Source={StaticResource TowersVM},Mode=TwoWay}"> <ListView.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal"></StackPanel> </ItemsPanelTemplate> </ListView.ItemsPanel> <ListView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" Margin="40,20,40,20"> <Grid x:Name="TemplateGrid"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <StackPanel Grid.Row="0" Orientation="Vertical" Margin="5,0,0,0"> <TextBlock FontSize="14" Text="{Binding Tower_Name}" FontWeight="ExtraBold"/> <TextBlock FontSize="9" Text="{Binding Location}"/> </StackPanel> <TextBlock Grid.Row="1" Text="{Binding Unit_type_desc}" Margin="5,5,0,0"/> <StackPanel Grid.Row="2" Grid.Column="0" Orientation="Horizontal" Margin="5,5,0,0"> <Image Source="/Resources/rupee_icon.png" Width="30"/> <StackPanel Orientation="Vertical" Margin="5,0,0,0"> <TextBlock Text="Price"/> <TextBlock Text="{Binding List_price}"> <Run Text=" Cr."/> </TextBlock> </StackPanel> </StackPanel> <StackPanel Grid.Row="2" Grid.Column="1" Orientation="Horizontal" Margin="20,5,0,0"> <Image Source="/Resources/area_icon.png" Width="30"/> <StackPanel Orientation="Vertical" Margin="5,0,0,0"> <TextBlock Text="Area"/> <TextBlock Text="{Binding Carpet_area}"> <Run Text=" Sqft."/> </TextBlock> </StackPanel> </StackPanel> <Button BorderBrush="LightGreen" Background="White" Grid.Row="3" Grid.Column="0" Margin="0,5,0,5"> <StackPanel Orientation="Horizontal"> <TextBlock Text="Available : "/> <TextBlock Text="{Binding Available,Source={StaticResource TowersVM},Mode=TwoWay}"/> </StackPanel> </Button> <Button BorderBrush="Red" Background="White" Grid.Row="3" Grid.Column="1" Margin="20,5,0,5"> <StackPanel Orientation="Horizontal"> <TextBlock Text="Sold : "/> <TextBlock Text="{Binding Sold,Source={StaticResource TowersVM},Mode=TwoWay}"/> </StackPanel> </Button> </Grid> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView> </DataTemplate> </tel:GridViewColumn.CellTemplate> </tel:GridViewColumn> </tel:RadGridView.Columns> </tel:RadGridView>

我想要的是:一个 GridView 行,其中包含一个 ListView(具有不同数量的项目)。 问题:所有 RadGrid 行在 ListView 中都具有相同数量的项目。

视图模型代码:

 public async void PopulateProjects()
       {           
           var vAllProjList = await _projectsRepo.GetAllAsync();
           foreach(var proj in vAllProjList)
           {
               //UnitTypesList.Clear();
               ProjectList.Add(new ProjectTowerUnitTypeModel() { Projectid = proj.Id, ProjectName = proj.Name });
               var vProjSpecificUnitList = await _unitTypesRepo.FindAsync(q => q.Class_id == proj.Id);


               foreach(var unit in vProjSpecificUnitList)
               {
                   UnitTypesList.Add(new ProjectTowerUnitTypeModel() { });
               }
           }
       }

我通过将子项的 ItemsSource 集合作为父项的模型属性来实现它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM