C# 如何获取uniformgrid中的所有按钮并滚动查看它们?

C# 如何获取uniformgrid中的所有按钮并滚动查看它们?,c#,wpf,C#,Wpf,我正在构建一个应用程序来显示安装在计算机中的所有软件,我已经有了所有的按钮来显示相应的图标,但是当我显示它们时,uniformgrid只显示适合窗口的按钮,我以为一个滚动条会显示它们,但是我到了窗口的末尾,按钮仍然不见了!我如何用滚动条显示它们? 以下是XAML代码: <Window x:Class="apple.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

我正在构建一个应用程序来显示安装在计算机中的所有软件,我已经有了所有的按钮来显示相应的图标,但是当我显示它们时,uniformgrid只显示适合窗口的按钮,我以为一个滚动条会显示它们,但是我到了窗口的末尾,按钮仍然不见了!我如何用滚动条显示它们? 以下是XAML代码:

<Window x:Class="apple.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"> 
        <Grid>
            <DockPanel Name="dock">
            <ScrollViewer VerticalScrollBarVisibility="Auto">
                <UniformGrid Name="gridx" DockPanel.Dock="Top" Rows="7" Columns="7">

                </UniformGrid>
            </ScrollViewer>
        </DockPanel>
    </Grid>
</Window>

以下是c#代码:

苹果名称空间 { /// ///MainWindow.xaml的交互逻辑 /// 公共部分类主窗口:窗口 { public string[]link=Directory.GetFiles(@“C:\ProgramData\Microsoft\Windows\Start Menu\Programs”、“*.lnk”、SearchOption.AllDirectories); 公共主窗口() { this.ResizeMode=ResizeMode.NoResize; //this.WindowStyle=WindowStyle.None; this.WindowState=WindowState.Maximized; 初始化组件(); masterGUI(); } public-void-masterGUI() { gridx.Height=System.Windows.SystemParameters.PrimaryScreenHeight; IconImage[]ico=null; 位图[]img=null; string[]list=null; 列表=新字符串[link.Length]; ico=新图标[link.Length]; img=新位图[link.Length]; for(int n=0;n删除
网格
DockPanel
并设置
UniformGrid.Rows
UniformGrid.Columns
,而不是同时设置两者。您只需要
窗口
滚动查看器
UniformGrid

<Window>
    <ScrollViewer>
        <UniformGrid Name="gridx" Columns="7"/>
    </ScrollViewer>
</Window>

要以更惯用的WPF方式进行此操作,您应该有如下内容:

<Window>
    <ScrollViewer>
        <ItemsControl ItemsSource="{Binding Programs}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="7"/>


然后,您将从数据源中公开一个
程序
集合,从而自动为每个已安装的程序生成一个项目。

非常感谢,有没有办法操纵按钮上背景的大小?
<Window>
    <ScrollViewer>
        <ItemsControl ItemsSource="{Binding Programs}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="7"/>