可以在具有多行的ListBox中显示图像

时间:2016-01-11 13:54:54

标签: c# wpf listbox

我正在尝试将列表框中的图像以某种方式显示。

现在列表框:

enter image description here

我想要的:

enter image description here

正如您所看到的,我希望滚动条位于侧面,并且根据列表框的大小,可以有多个列和行。

2 个答案:

答案 0 :(得分:1)

WrapPanel定义为ListBox' s ItemsPanel

            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel ></WrapPanel>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>

不要忘记将WidthMaxWidth设置到换行符面板。达到最大宽度后,它将开始在新行上放置内容...

答案 1 :(得分:0)

使用宽度设置为值的WrapPanel。例如,运行代码:

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication1"
    Title="MainWindow" Height="350" Width="525" >
<Window.DataContext>
    <local:ParentViewModel />
</Window.DataContext>

<ListBox  Height="auto" ItemsSource="{Binding MyList,Mode=TwoWay}">
    <ListBox.Style>
        <Style TargetType="{x:Type ListBox}">
            <Setter Property="ItemTemplate" >
                <Setter.Value>
                    <DataTemplate>
                        <Button Content="{Binding}" Padding="15,5" Margin="100,40,0,0"
                                Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}},Path=DataContext.RemoveButtonCommand}"
                                CommandParameter="{Binding}"
                                />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListBox.Style>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel  Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}},Path=ActualWidth}"
                        >                    
            </WrapPanel>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>

您将获得垂直和水平滚动条。均根据窗口的高度和宽度使用列表框中的元素进行调整。 (请绑定您自己的列表框来源)