相关疑难解决方法(0)

强制TextBlock在WPF ListBox中换行

我有一个显示消息的WPF列表框.它包含左侧的头像和垂直堆叠在头像右侧的用户名和消息.布局很好,直到消息文本应自动换行,但我在列表框上得到一个水平滚动条.

我用谷歌搜索并找到了类似问题的解决方案,但都没有奏效.

<ListBox HorizontalContentAlignment="Stretch"  ItemsSource="{Binding Path=FriendsTimeline}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Border BorderBrush="DarkBlue" BorderThickness="3" CornerRadius="2" Margin="3" >
                    <Image Height="32" Width="32"  Source="{Binding Path=User.ProfileImageUrl}"/>
                </Border>
                <StackPanel Orientation="Vertical">
                    <TextBlock Text="{Binding Path=User.UserName}"/>
                    <TextBlock Text="{Binding Path=Text}" TextWrapping="WrapWithOverflow"/> <!-- This is the textblock I'm having issues with. -->
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

wpf listbox textblock word-wrap

93
推荐指数
2
解决办法
5万
查看次数

在ListBox中扩展选定项高度

有没有一种方法可以让SelectedItem的高度大于ListBox中其他项目的高度?这就是我现在所拥有的,但它只是作为一个正常的列表框:

public class BuddyListBox : ListBox
{

    public BuddyListBox() 
    {
        this.ResizeRedraw = true;
        this.DoubleBuffered = true;
        this.BorderStyle = BorderStyle.None;
        this.Dock = DockStyle.Fill;
        this.DrawMode = DrawMode.OwnerDrawVariable;
        this.ItemHeight = 16;
    }
    protected override void OnDrawItem(DrawItemEventArgs e)
    {
        if (e.Index == -1 || e.Index >= this.Items.Count)
            return;

        Buddy current = (Buddy)this.Items[e.Index];
        //Bitmap icon = current.StatusImage;

        //e.Graphics.DrawImage(icon, e.Bounds.Left, e.Bounds.Top, 16, 16);
        e.DrawBackground();
        e.Graphics.DrawString(current.Address, e.Font, new SolidBrush(current.Status != BuddyStatus.offline ? e.ForeColor : Color.DarkGray), 16 + e.Bounds.Left, e.Bounds.Top);
        e.Graphics.DrawString(current.Status.ToString(), e.Font, new SolidBrush(Color.LightGray), e.Bounds.Right - (int)(e.Graphics.MeasureString(current.Status.ToString(), e.Font).Width) …
Run Code Online (Sandbox Code Playgroud)

c# listbox winforms

3
推荐指数
1
解决办法
3642
查看次数

标签 统计

listbox ×2

c# ×1

textblock ×1

winforms ×1

word-wrap ×1

wpf ×1