添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
s00sss00s 2022-05-30 18:44 采纳率: 42.9%
浏览 120
已结题

wpf的listbox嵌套listbox内层的数据过长时外层行高如何跟着自适应

问题遇到的现象和发生背景

WPF的listbox嵌套listbox时,里层的listbox数据过长时,外层的行高不能自适应变高

问题相关代码,请勿粘贴截图
<Window x:Class="WPFceshiTEST.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFceshiTEST"
        mc:Ignorable="d"
        Title="MainWindow" >
    <Grid Width="1200" Height="600">
        <ListBox Name="LB1"  HorizontalContentAlignment="Stretch" Width="1000" Height="500"  >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="5">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="100"/>
                            <ColumnDefinition Width="300"/>
                            <ColumnDefinition Width="300"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="30"/>
                            <RowDefinition Height="30"/>
                            <RowDefinition Height="100"/>
                        </Grid.RowDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0"  Text="{Binding ordernumber}"/>
                        <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding shuliang}"/>
                        <TextBlock Grid.Row="1" Grid.Column="0" Text="我是第二行" Grid.ColumnSpan="3" />
                        <ListBox  Name="LB2" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" ItemsSource="{Binding shangpinzu}" >
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding tupian}"/>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WPFceshiTEST
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
        public MainWindow()
            InitializeComponent();
            List<OrderList> list = new List<OrderList>();
            ShangPin[] shangpinzus = new ShangPin[10];
            for (int i = 0; i <10; i++)
                ShangPin shangpins = new ShangPin("第" + i + "个商品的图片", "第" + i + "个商品的标题");
                shangpinzus[i] = shangpins;
                OrderList ord = new OrderList("订单编号:A500" + i + "    商品数量:", 10, shangpinzus);
                list.Add(ord);
            LB1.ItemsSource = list;
        public class OrderList
            public string ordernumber { get; set; }
            public int shuliang { get; set; }
            public ShangPin[] shangpinzu { get; set; }
            public OrderList(string ordernumber, int shu, ShangPin[] shangpinmingxi)
                this.ordernumber = ordernumber;
                this.shuliang = shu;
                shangpinzu = shangpinmingxi;
        public class ShangPin
            public string tupian { get; set; }
            public string biaoti { get; set; }
            public ShangPin(string tu, string bt)
                tupian = tu;
                biaoti = bt;
运行结果及报错内容
我的解答思路和尝试过的方法

数据组成是: 订单列表,包含了订单编号,订单数量,商品详情(商品详情包含标题,图片);
需要外层listbox显示订单编号和订单数量,内层的listbox显示对应的该行订单的标题,图片列表。

两个listbox嵌套在一起的时候,外层的listbox我可以通过 itemsource=list,在c#这边赋值,可以展现出来,内层的listbox通过绑定list的集合对象的子集合也可以读取到数据,子集合数据过多时,内层的listbox不会自己变高,受外层的listbox的固定行高的影响,出现了右侧的下拉条,怎么才能让外层的listbox的行高跟着里面的变化呢?

0

3 条回答 默认 最新

  • 真的小白啊 2022-05-31 00:08
    关注

    外层 ListBox 绑定 List<OrderList> list
    内层 ListBox 绑定 List<OrderList> list 里面的 ShangPin[] shangpinzu ,
    直接写属性名。
    比如外层某一项是一个 OrderList 对象,内层会去解析外层这个 OrderList 对象的 shangpinzu 属性

    本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
    1 人已打赏
    按下Enter换行,Ctrl+Enter发表内容
  • hyh123a 全栈领域新星创作者 2022-05-30 19:59
    关注

    要不要尝试修改下思路,
    不用两个listview,而是用其他的组件替换下?
    当然,如果觉得两个listview更好想要用这个方案的话,这边帮你看下有没有解决方案。

    本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
    1 人已打赏
    按下Enter换行,Ctrl+Enter发表内容
  • 是小晴晴呀 2022-05-30 21:44
    关注

    是没找到数据吗

    本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
    按下Enter换行,Ctrl+Enter发表内容
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月8日
  • 已采纳回答 5月31日
  • 修改了问题 5月31日
  • 修改了问题 5月31日

悬赏问题

  • ¥30 关于#微信小程序#的问题:微信开发者工具+unicloud登录功能 FPGA之蜂鸣器播放音乐中编译报错 虚拟机没用多久amdgpu就占满了 关于#c##的问题:先想将两个窗体合并一个解决方案,启动时两个项目同时启动,打包时生成1个exe GRS多基因风险评分计算 有偿求深信服PT2认证SSTP实验操作文档 关于#matlab#的问题:调用Python时崩溃 split()函数分割