簡體   English   中英

具有GridSplitter的網格不考慮第二列的最小寬度

[英]Grid with GridSplitter not respecting minimum width for the second column

我是WPF的新手,但遇到一個小而令人沮喪的問題。

我有兩行兩列的網格。 第一行包含一個菜單欄,第二行包含一個左側的列(包含一個列表框)和一個右側的列(包含一個列表框)。

它還包含一個GridSplitter來處理調整兩列的大小。 我自然只希望在此界面中有一個GridSplitter。

我將第一列的最小寬度設置為260px,並且效果很好。 我無法將列的大小調整為低於260px。 但是,對於第二列(右側的列),它根本沒有考慮最小寬度屬性。

我可以調整它的大小,使其甚至完全不可見。

我在這里做錯了什么?

以下XAML:

謝謝

<Window x:Class="MyProject.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:MyProject"
        mc:Ignorable="d"
        Title="MainWindow" Width="800" Height="600" Background="Black" MinWidth="800" MinHeight="600" Icon="/MyProject;component/Images/Porgram Icons/Icon1.ico">
    <Window.Resources>
        <ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
            <WrapPanel />
        </ItemsPanelTemplate>
        <ItemsPanelTemplate x:Key="ItemsPanelTemplate2">
            <StackPanel/>
        </ItemsPanelTemplate>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="20"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="260" MinWidth="260"/>
            <ColumnDefinition MinWidth="450"/>
        </Grid.ColumnDefinitions>

        <Menu Width="Auto" Height="20" Background="#272822" Foreground="#FFFFFF" DockPanel.Dock="Top" Grid.Row="0" Grid.ColumnSpan="2">
            <MenuItem Header="_File" Background="#272822" Foreground="#FFFFFF" BorderBrush="Black">
                <MenuItem Header="Quit" Background="#272822"/>
                <Separator />
            </MenuItem>
        </Menu>

        <ListBox x:Name="listBox1" ItemsPanel="{DynamicResource ItemsPanelTemplate2}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" BorderThickness="0" Background="#272822" Grid.Column="0" Grid.Row="1" MinWidth="110" VerticalContentAlignment="Top" ScrollViewer.VerticalScrollBarVisibility="Hidden"/>

        <GridSplitter Width="5" Background="#272824" Grid.Column="0" Grid.Row="1"/>

        <Border CornerRadius="10" BorderBrush="#272824" 
              BorderThickness="1" Grid.Column="1" Grid.Row="1">
            <ListBox x:Name="listBox2" ItemsPanel="{DynamicResource ItemsPanelTemplate1}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" BorderThickness="1" Background="#272822" Grid.Row="1" Grid.Column="1"/>
        </Border>
    </Grid>
</Window>

在下面的columnrow使用GridSplitter

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="20"/>
        <RowDefinition />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="260" MinWidth="260"/>
        <ColumnDefinition Width="5"/>
        <ColumnDefinition MinWidth="260"/>
    </Grid.ColumnDefinitions>

  //First Control in Column 0

  <GridSplitter Width="5" Grid.Column="0" Grid.Row="1"/>// Splitter in column 1

  //Second Control in column 2

</Grid>

您會發現此方法效果更好...

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="30*" MinWidth="260"/>
        <ColumnDefinition Width="70*" MinWidth="450"/>
    </Grid.ColumnDefinitions>

我不清楚您的定義為什么不起作用。 第一列的固定寬度似乎使分隔符混亂。

最佳做法是將拆分器放在自己的列中。

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="30*" MinWidth="260"/>
        <ColumnDefinition Width="5"/>
        <ColumnDefinition Width="70*" MinWidth="450"/>
    </Grid.ColumnDefinitions>
    <GridSplitter Width="5" Background="#272824" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM