首页 > 解决方案 > 填充网格,然后在 WPF 中向下扩展

问题描述

[在此处输入图像描述][1]我想制作一个应用程序,将文件夹中的所有文件显示为按钮,以便我可以从应用程序中打开它们。所以他们被动态添加。但我有一个问题:我需要像网格一样并排显示它们。如果文件超过 9 个,则需要向下滚动。我试过布局:

<Grid Name="buttonGrid">
    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
        <Grid Height="450" Width="800" Background="White">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1*"/>
                <ColumnDefinition Width="1*"/>
                <ColumnDefinition Width="1*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="1*"/>
                <RowDefinition Height="1*"/>
                <RowDefinition Height="1*"/>
            </Grid.RowDefinitions>
        </Grid>
    </ScrollViewer>
</Grid>

和IC#:

public partial class PlayGame : Page
{
    public PlayGame()
    {
        InitializeComponent();
        AddButtons();

    }

    //Add buttons to grid
    private void AddButtons()
    {
        var folderName = $"{AppDomain.CurrentDomain.BaseDirectory}games";
        if (!Directory.Exists(folderName))
        {
            Directory.CreateDirectory(folderName);
        }

        var allFiles = Directory.GetFiles(folderName);

        foreach (string fileName in allFiles)
        {
            var fi = new FileInfo(fileName);


            Button newBtn = new Button
            {
                Content = fi.Name,
                Name = "Button" + fi.Name.Replace(".", "_"),
                BorderThickness = new Thickness(0)
            };

            Grid.SetRow(newBtn, 0);
            Grid.SetColumn(newBtn, 0);

            newBtn.Click += OpenFile;

            buttonGrid.Children.Add(newBtn);

        }
    }
}

它部分工作......按钮被添加,它们工作,但它们相互堆叠。那么我该如何解决呢?

我想要这样:https ://i.stack.imgur.com/6EUKS.png 但是对于每个文件,动态地都有一个文件夹。如果有超过 9 个文件向下扩展,那么滚动查看器就会起作用。

标签: c#wpf

解决方案


尝试使用

<ScrollViewer Height="300">
    <WrapPanel Name="listView" Orientation="Horizontal">
    </WrapPanel>
</ScrollViewer>

推荐阅读