标签: uniformgrid

了解统一网格控件

我只是尝试统一网格,它是如何工作的.

代码:

<UniformGrid Name="uniformGrid1" Rows="2" Columns="3">
        <Button Content="Rohit" Grid.Row="0" Grid.Column="0" />
        <Button Content="asit" Grid.Row="0" Grid.Column="2" />
</UniformGrid>
Run Code Online (Sandbox Code Playgroud)

我发现两个按钮彼此相邻放置,但它们之间存在一列.为什么会这样?(在统一网格中,每个单元格大小相似,它们之间应该有一个单元格)

理解为什么它是这样(通过回答),但仍然好奇知道Attached属性的重要性 - Grid.Row&Grid.Column如果他们什么也不做?

wpf wpf-controls uniformgrid

27
推荐指数
2
解决办法
6万
查看次数

WPF:是否可以在UniformGrid中执行行/列跨度?

是否可以在UniformGrid中执行行/列跨度?使用网格附加属性

Grid.RowSpan

Grid.ColumnSpan

在UniformGrid上不起作用.

wpf xaml row uniformgrid

17
推荐指数
1
解决办法
9482
查看次数

如何垂直制作匀格

我正在使用UniformGrid,它正在使项目水平显示.有没有办法让它垂直显示?

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <UniformGrid Columns="3" />
    </ItemsPanelTemplate>
</ListView.ItemsPanel>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

wpf xaml listview itemspanel uniformgrid

16
推荐指数
2
解决办法
8780
查看次数

如何改变UniformGrid控件的方向?

默认情况下,UniformGrid会显示它的子项,如下所示:

1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)

我想如下:

1 4 7
2 5 8
3 6 9
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

wpf uniformgrid

7
推荐指数
1
解决办法
2506
查看次数

WPF滚动Uniformgrid

我需要显示位于特定路径中的所有文件.我创建了一个用户控件,其中包含文件详细信息的文本块(名称,大小,扩展名等),此控件将是统一网格的子控件.

问题是,如果我的uniformgrid是5x5,并且我有超过25个文件,则不会显示第26个元素.

我想知道,有没有办法滚动统一网格的内容?

我知道我可以使用列表框和绑定(我还在阅读它),但是我需要以编程方式添加控件,因为控件有一个事件,并且当用户控件的新实例我订阅它时已创建,然后添加到子数组.

我已经看过这篇文章了,我已经将uniforgrid放在了ItemsControl中,但它根本不起作用,这是我的xaml:

<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" >
    <ItemsControl x:Name="gridArchivos">
        <ItemsControl.ItemsPanel >
            <ItemsPanelTemplate >
                <UniformGrid Columns="5" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>                    
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

根据帖子,只需要指定cols或rows,而不是两者.所以,只有5个小马.我不希望hrizontal滚动,只需垂直.

谢谢你的时间.

wpf xaml itemscontrol scrollviewer uniformgrid

6
推荐指数
1
解决办法
4853
查看次数

WPF UniformGrid 动态行高

我编写了一个显示一些图像的小应用程序。为此,我使用了一个UniformGrid. 我的xaml代码:

<ScrollViewer>
  <ItemsControl ItemsSource="{Binding Images}">
    <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
        <UniformGrid Name="unifomGrid" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling" VirtualizingPanel.IsVirtualizingWhenGrouping="True" IsItemsHost="True" Loaded="unifomGrid_Loaded" />
      </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
      <DataTemplate>
        <materialDesign:Card Padding="32px" Margin="8px">
          <StackPanel>
            <StackPanel>
              <Image Source="{Binding Path, Mode=OneWay}" />
            </StackPanel>
          </StackPanel>
        </materialDesign:Card>
      </DataTemplate>
    </ItemsControl.ItemTemplate>
  </ItemsControl>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

我的问题是,行高UniformGrid不是动态的。是否有可能每一行都有自己的行高?目前每行的高度是 内最高元素的高度UniformGrid

c# wpf height uniformgrid

5
推荐指数
1
解决办法
4572
查看次数

使用UniformGrid的列表框 - 未居中的项目

我为ItemsPanelTemplate使用UniformGrid有一个列表框.这是一张照片列表.我希望照片在网格的每个单元格的中心水平居中,但似乎无论我做什么,图像都对齐到每个单元格的左侧.这是我目前的XAML:

<Border BorderThickness="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" DockPanel.Dock="Right">
    <ListBox Name="PhotosListBox" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid IsItemsHost="True" HorizontalAlignment="Center"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Image Source="{Binding Path=photo}" HorizontalAlignment="Center"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Border>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我将DataTemplate中的Image控件设置为Horizo​​ntalAlignment ="Center",我认为会这样做,但它不起作用.

我究竟做错了什么?

wpf xaml uniformgrid

4
推荐指数
1
解决办法
3372
查看次数

创建一个方形边框,图像内部,宽度和高度取决于统一网格列

我认为这是一个有点棘手的问题.

我有一个ListBox必须呈现一些图像,每个图像必须放在一个矩形或方形边框内.我知道,这很简单.事实是,这个列表框必须每行显示3个元素,无论是屏幕分辨率还是窗口大小.

为了获得它我像这样模板化列表框:

<ListBox Grid.Column="2" Grid.Row="1" x:Name="_productsLB" SelectedIndex="0"
             ItemsSource="{Binding Products}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
             HorizontalContentAlignment="Stretch">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="3" Rows="4"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Border BorderThickness="1" Background="White" BorderBrush="Black" Margin="8"
                    Width="Auto" Height="Auto" HorizontalAlignment="Stretch">
                    <Image Source="{Binding ImagePath}" Stretch="Uniform"/>                        
                </Border>                    
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
Run Code Online (Sandbox Code Playgroud)

问题是我获得了图像周围的矩形边框,而不是"listboxitem"周围的方形边框.

请记住,我不能指定width属性,因为它们必须依赖于统一的网格列宽度.

你有一些提示吗?

非常感谢!

c# wpf layout xaml uniformgrid

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

WPF多列列表视图的最佳方法

我有一个包含大量数据的ListView(200多个项目),所以为了节省空间,它使用UniformGrid来显示3列而不是1列

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <UniformGrid Columns="3" />
    </ItemsPanelTemplate>
</ListView.ItemsPanel>
Run Code Online (Sandbox Code Playgroud)

我还修改了样式,以便每个项目都与顶部对齐

<ListView.Resources>
    <Style TargetType="{x:Type ListView}">
        <Setter Property="ItemContainerStyle">
            <Setter.Value>
                <Style TargetType="ListViewItem">
                    <Setter Property="VerticalContentAlignment" Value="Top"/>
                </Style>
            </Setter.Value>
        </Setter>
    </Style>
</ListView.Resources>
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但是由于显示的数据长度不同,项目组中仍然存在空间浪费,因为大多数数据都适合单行,但偶尔会有一个占用2行或更多行的项目.这意味着当组中只有1行需要额外的空间时,组中的所有行都会占用2行或更多行

替代文字

有谁知道如何解决这个问题,或者可以建议另一种方法来避免统一网格?谢谢!

wpf listview uniformgrid

2
推荐指数
1
解决办法
6334
查看次数

单击填充了网格的Uniformgrid,获取网格的名称

我是WPF的新手,我正在使用这段代码用网格填充uniformgrid,

 public MainWindow()  
                {  
                    InitializeComponent();  
                    SolidColorBrush defaultBrush = new SolidColorBrush(Colors.Wheat);  
                    SolidColorBrush alternateBrush = new SolidColorBrush(Colors.Black);
                    Char L = 'A';
                    int N = 1;  
                    for (int i = 0; i < 64; i++)  
                    {  
                        Grid cell = new Grid();
                        if(N==9)
                         {   
                            N=1;
                            L++;
                         }

                        if ((i + i / 8) % 2 == 0)  
                        {  
                            cell.Name = L + N.ToString();
                            cell.Background = defaultBrush;  
                            ChessBoard.Children.Add(cell);  
                        }  
                        else  
                        {  
                            cell.Name = L + N.ToString();
                            cell.Background = alternateBrush;   
                            ChessBoard.Children.Add(cell);  
                        } 
                        N++
                    } 
Run Code Online (Sandbox Code Playgroud)

然后,当我点击名为ChessBoard的uniformedgrid时,我试图找出某个网格的名称.

       private …
Run Code Online (Sandbox Code Playgroud)

c# wpf uniformgrid

2
推荐指数
1
解决办法
1953
查看次数

UniformGrid 减少 WPF 中的行间距

我正在使用 WPF UniformGrid 绑定项目列表,xaml 是这样的

 <ListBox  Name="lviewSearch"  ItemsSource="{Binding SearchSettingsCollection}" SelectionMode="Multiple">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="2"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <ItemsControl Margin="3" Padding="5">
                    <DockPanel>
                        <Label Content="{Binding Label}" HorizontalAlignment="Stretch"  Cursor="Hand" />
                    </DockPanel>
                </ItemsControl>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
Run Code Online (Sandbox Code Playgroud)

但是,如果项目数量较少,则行之间的间距太大,如下所示 https://i.stack.imgur.com/Xr5qy.png

我怎样才能减少这个?

c# wpf uniformgrid

2
推荐指数
1
解决办法
6513
查看次数

WPF UniformGrid布局

我有一个ItemsControl计划主持水果对象列表.我有一个Fruit对象列表都有自己的DataTemplates.我有一个Grape物体,一个Orange物体和一个Kiwi物体.

我想使用a UniformGrid使所有单元格具有相同的大小,但我希望Kiwi对象只跨越1个单元格,我希望Grape跨越2个单元格(ColumnSpan = 2)并且我希望Orange控件跨越4个单元格(ColumnSpan = 2RowSpan = 2)

我怎么能做到这一点?

wpf grid layout uniformgrid

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

WPF 2列布局容器

如何创建布局容器,我可以作为使用ItemsPanelItemsControl 是堆叠在两列的项目,并使用正确的列未在左边的列(足够的空间像一个统一的网格包裹混合剩余项目面板)。

例如:

高度几乎相同的四个项目将显示如下:

其中两个宽度明显较小的四个项目将显示如下:

c# wpf wrappanel uniformgrid

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