标签: wpf-grid

WPF网格的底部边框

关于WPF网格控件,我有一个非常简单的问题.

我想在网格中的每一行设置一个底部边框,但只能找到如何在每个单元格周围放置所有4个边框..我的代码非常简单

<Grid Height="174" HorizontalAlignment="Left" Margin="23,289,0,0" Name="grid2" VerticalAlignment="Top" Width="730">
    <Grid.RowDefinitions>
        <RowDefinition Height="45" />
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="255" />
        <ColumnDefinition Width="95" />
        <ColumnDefinition Width="95" />
        <ColumnDefinition Width="95" />
        <ColumnDefinition Width="95" />
        <ColumnDefinition Width="95" />
    </Grid.ColumnDefinitions>
</Grid>
Run Code Online (Sandbox Code Playgroud)

对于我正在使用的另一个网格需要所有四个边界,我正在使用

<Border Grid.Column="0" Grid.Row="0" BorderBrush="#61738B" BorderThickness="1" />
Run Code Online (Sandbox Code Playgroud)

PS网格的内容是一些标签,文本框等.如果这很重要的话.

感谢任何指针.

中号

c# wpf border wpf-grid

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

如何在 WPF 中折叠星形大小的网格列?

Width通过设置为 来使三列具有相同的宽度Auto

<Grid x:Name="myGrid">
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>

  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>

  <Label Grid.Row="0" Grid.Column="0">One</Label>
  <Label Grid.Row="0" Grid.Column="1" x:Name="label1">Two</Label>
  <Label Grid.Row="0" Grid.Column="2">Three</Label>
</Grid>
Run Code Online (Sandbox Code Playgroud)

我想实现的是,如果中间列折叠或隐藏,则其他两列占用剩余空间并获得相同的宽度。

如果我只是因为宽度=“*”而将可见性设置为折叠或隐藏,则其他两列宽度保持不变。

<Label Grid.Row="0" Grid.Column="1" Visibility="Collapsed">Two</Label>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我通过以编程方式将第二列宽度设置为自动来实现所需的功能,但我正在寻找其他一些解决方案(最好是 xaml 方式一)。

private void Button_Click(object sender, RoutedEventArgs e)
{
  this.myGrid.ColumnDefinitions[1].Width = GridLength.Auto;
  this.label1.Visibility = Visibility.Collapsed;
}
Run Code Online (Sandbox Code Playgroud)

wpf xaml wpf-grid

9
推荐指数
2
解决办法
3539
查看次数

在WPF中折叠网格行

我创建了一个自定义的WPF元素RowDefinition,当Collapsed元素的属性设置为时,该元素应该折叠网格中的行True.

它通过使用样式中的转换器和数据触发器将行的高度设置为0来实现.它基于此SO答案.

在下面的示例中,当网格分割器超过窗口的一半时,这非常有效.但是,当它不到一半时,行仍然会崩溃,但第一行不会展开.相反,过去的行只有一个白色的间隙.这可以在下图中看到.

图片显示下半部分,底行不会消失,但超过一半

同样,如果在任何折叠的行上设置MinHeight或者MaxHeight设置,则它根本不会折叠该行.我尝试通过在数据触发器中为这些属性添加setter来修复此问题,但它没有修复它.

我的问题是什么可以做不同的,这样也没关系有关行的大小或者MinHeight/ MaxHeight设置,它只是能够折叠行?


MCVE

MainWindow.xaml.cs

using System;
using System.ComponentModel;
using System.Globalization;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;

namespace RowCollapsibleMCVE
{
    public partial class MainWindow : INotifyPropertyChanged
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        private bool isCollapsed;

        public bool IsCollapsed
        {
            get => …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datatrigger wpf-grid

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

如何在网格上拉伸按钮,xaml

我在整个网格上拉伸按钮时遇到问题.

我的代码看起来像这样:

<Grid x:Name="LayoutRoot" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="2*"/>
        <RowDefinition Height="8*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <StackPanel Grid.Column="5" Grid.Row="1" Width="Auto" Height="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Button Content="Search" Background="#FF13D38D" Click="searchButton_Click" FontSize="48"/>
    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用,并在整个网格上拉伸按钮,我尝试了maxwidth/maxheight但它也没有正常工作任何人都有想法?

xaml stackpanel wpf-grid

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

多个自动列定义导致奇怪的GridSplitter行为

我有以下XAML:

<Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <TextBlock Text="0,0" Grid.Column="0" Background="Yellow" />
        <TextBlock Text="1,0" Grid.Column="1" Background="SkyBlue" />
        <GridSplitter Width="20" Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Stretch" ShowsPreview="True" />
        <TextBlock Text="3,0" Grid.Column="3" Grid.Row="0" />
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

当只有一个ColumnDefinitionWidthAuto,在GridSplitter正常工作.然而,一旦存在与多个列WidthAuto,所述第一Auto列中的时也被调整大小GridSplitter移动(可在细胞中可以看出1,0).

在调整大小之前:

在此输入图像描述

调整大小后:

在此输入图像描述

如何防止GridSplitter调整第二列的大小?

wpf gridsplitter wpf-grid

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

WPF网格白色条纹

Grid里面有很多按钮。这些按钮应该无缝连接。在大多数情况下,这实际上是可行的,但有时在网格的列/行之间会有白色条纹:

图像中的白色条纹

我通过这样的代码将按钮添加到网格中(对于非最小代码,我感到抱歉,但是我真的不知道在这里有什么用):

public partial class MainWindow
{
    private int _xCount;
    private int _yCount;

    public MainWindow ()
    {
        InitializeComponent ();

        SetSize (40, 40);
    }

    public void SetSize (int x, int y)
    {
        _xCount = x;
        _yCount = y;

        Grid.ColumnDefinitions.Clear ();
        Grid.RowDefinitions.Clear ();

        for (var i = 0; i < x; i++)
            Grid.ColumnDefinitions.Add (new ColumnDefinition {Width = new GridLength (100, GridUnitType.Star)});
        for (var i = 0; i < y; i++)
            Grid.RowDefinitions.Add (new RowDefinition {Height = new GridLength (100, GridUnitType.Star)});

        for …
Run Code Online (Sandbox Code Playgroud)

c# wpf wpf-grid

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

标签 统计

wpf-grid ×6

wpf ×5

c# ×3

xaml ×3

border ×1

datatrigger ×1

gridsplitter ×1

stackpanel ×1