首页 新闻 会员 周边

WPF ListBox 模板问题,Item的宽度如何自适应?

0
[已解决问题] 解决于 2016-09-19 10:38
  <ListBox x:Name="lbMailShots" Grid.Row="1" Width="300" SelectionChanged="lbMailShots_SelectionChanged">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition ></RowDefinition>
                                    <RowDefinition ></RowDefinition>
                                </Grid.RowDefinitions>
                               <Grid.ColumnDefinitions>
                                    <ColumnDefinition x:Name="cdMailShot"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Row="0"  Text="{Binding Path=Subject}" HorizontalAlignment="Left" FontSize="14" Padding="0, 10, 0 0" TextWrapping="NoWrap"></TextBlock>
                                <TextBlock Grid.Row="1"  Text="{Binding Path=BodyShot}" FontSize="12" Foreground="#777" Padding="0, 0,0,10" TextWrapping="NoWrap"></TextBlock>
                            </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>

wpf
Eysa的主页 Eysa | 初学一级 | 园豆:62
提问于:2016-09-17 12:18
< >
分享
最佳答案
0

其实你是想让 主题 宽度自适应,  正文显示不全就显示... 是吧。 因为你主题可能很长,超出父级容器后水平滚动条还是会出现的,没有更好的办法,窗口的宽度也是有限的。 除非你给它一个最大宽度,主题和正文超出后都显示...这样水平滚动条就不用出来了。你试试。

奖励园豆:5
Darren.Dai | 菜鸟二级 |园豆:329 | 2016-09-18 09:12

 不是,标题和正文都要显示... 如果超出的话。

Eysa | 园豆:62 (初学一级) | 2016-09-18 09:17

@Eysa: 那就没问题,把ListBox的width去掉就能自适应了,我觉得还是给个minwidth

Darren.Dai | 园豆:329 (菜鸟二级) | 2016-09-18 09:32

@Darren.Dai: 去掉Width里面的TextBlock如果文字多的话会水平撑开的,效果如图。

Eysa | 园豆:62 (初学一级) | 2016-09-18 09:34

@Eysa: List box 加一个属性  ScrollViewer.HorizontalScrollBarVisibility="Disabled"

Darren.Dai | 园豆:329 (菜鸟二级) | 2016-09-18 10:00

@Darren.Dai: 为了避免你问个没头 我还是给你贴代码吧。

  <ListBox x:Name="lbMailShots" Grid.Row="1" Width="300" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <RowDefinition />
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition x:Name="cdMailShot"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Row="0"  Text="{Binding Path=Subject}" TextTrimming="CharacterEllipsis"
                                   HorizontalAlignment="Left" FontSize="14" 
                                   Padding="0, 10, 0 0" TextWrapping="NoWrap"/>
                        <TextBlock Grid.Row="1"  Text="{Binding Path=BodyShot}" 
                                   FontSize="12" Foreground="#777" Padding="0, 0,0,10"  TextTrimming="CharacterEllipsis"
                                   TextWrapping="NoWrap"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
Darren.Dai | 园豆:329 (菜鸟二级) | 2016-09-18 10:01

@Eysa: 另外提醒一下  BodyShot  写错了单词啦

Darren.Dai | 园豆:329 (菜鸟二级) | 2016-09-18 10:04

@Darren.Dai: 嗯嗯,晚上回去试试,多谢仁兄相助。

Eysa | 园豆:62 (初学一级) | 2016-09-18 10:17
其他回答(2)
0

我记得有个 

狂扁小朋友 | 园豆:10 (初学一级) | 2016-09-17 15:22
0

gridview里面有属性,可以设置是否省略显示内容,你可以参考一下

代码小兵的成长 | 园豆:303 (菜鸟二级) | 2016-09-18 08:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册