C# 使用GridSplitter和GridRows/Columns定义的XAML(WPF)中的大小调整问题
我目前正在用C#中的WPF制作游戏引擎编辑器。我决定将GridSplitter组件与包含列和行定义的网格一起使用。我有两个网格,一个用于顶部列定义(0),一个用于底部列定义(1)。在顶部网格中,我有一些用于放置3个选项卡控件和2个网格拆分器的行定义。我在第二行中没有任何网格拆分器或行定义,只有另一个选项卡控件,以便它可以缩放到相同的屏幕宽度 我的问题是: 这是我的密码:C# 使用GridSplitter和GridRows/Columns定义的XAML(WPF)中的大小调整问题,c#,wpf,visual-studio,xaml,game-engine,C#,Wpf,Visual Studio,Xaml,Game Engine,我目前正在用C#中的WPF制作游戏引擎编辑器。我决定将GridSplitter组件与包含列和行定义的网格一起使用。我有两个网格,一个用于顶部列定义(0),一个用于底部列定义(1)。在顶部网格中,我有一些用于放置3个选项卡控件和2个网格拆分器的行定义。我在第二行中没有任何网格拆分器或行定义,只有另一个选项卡控件,以便它可以缩放到相同的屏幕宽度 我的问题是: 这是我的密码: <Window x:Class="Editor.MainWindow" xmlns="http://schema
<Window x:Class="Editor.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:Editor"
mc:Ignorable="d"
Title="Frostplay Engine 2020.1.0 - Level.frost - Project" Height="720" Width="1280" Background="#FF1E1E1E">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="3" />
<RowDefinition Height="250" />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3" />
<ColumnDefinition Width="3" /> <!-- 2: First Grid Splitter -->
<ColumnDefinition Width="*" />
<ColumnDefinition Width="3" /> <!-- 4: Second Grid Splitter -->
<ColumnDefinition Width="3" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TabControl x:Name="TopLControl" Background="{x:Null}" BorderThickness="0">
<TabItem Header="Hierarchy" Style="{StaticResource CustomTabControl}" Foreground="White" FontSize="14">
<Grid Background="#FF3C3C3C"/>
</TabItem>
</TabControl>
<GridSplitter Grid.Column="2" Width="3" HorizontalAlignment="Stretch" Background="#FF282828" />
<TabControl x:Name="TopCControl" Grid.Column="3" Background="{x:Null}" BorderThickness="0">
<TabItem Header="Scene" Style="{StaticResource CustomTabControl}" Foreground="White" FontSize="14">
<Grid Background="#FF3C3C3C"/>
</TabItem>
<TabItem Header="Game" Style="{StaticResource CustomTabControl}" Foreground="White" FontSize="14">
<Grid Background="#FF3C3C3C"/>
</TabItem>
</TabControl>
<GridSplitter Grid.Column="4" Width="3" HorizontalAlignment="Stretch" Background="#FF282828" />
<TabControl x:Name="TopRightControl" Grid.Column="6" Background="{x:Null}" BorderThickness="0">
<TabItem Header="Inspector" Style="{StaticResource CustomTabControl}" Foreground="White" FontSize="14">
<Grid Background="#FF3C3C3C"/>
</TabItem>
</TabControl>
</Grid>
<GridSplitter Grid.Row="1" Height="3" HorizontalAlignment="Stretch" Background="#FF282828" />
<Grid Grid.Row="2">
<TabControl x:Name="BottomControl" Background="{x:Null}" BorderThickness="0">
<TabItem Header="Project" Style="{StaticResource CustomTabControl}" Foreground="White" FontSize="14">
<Grid Background="#FF3C3C3C"/>
</TabItem>
<TabItem Header="Console" Style="{StaticResource CustomTabControl}" Foreground="White" FontSize="14">
<Grid Background="#FF3C3C3C"/>
</TabItem>
</TabControl>
</Grid>
</Grid>
有人知道如何修复它吗?当我向左拖动左栅格拆分器时,中间的选项卡控件也向左缩放,当我向右移动右栅格拆分器时,中间的选项卡控件向右缩放
谢谢你的阅读!:) 之所以会出现这种情况,是因为带有
Width=“*”
的3列定义将始终具有相同的宽度(这就是*,当其中一列的宽度改变时,其他所有列的宽度也会改变)。您可以为GridSplitter使用两个Width=“3”
列定义。移动拆分器时,TabControl的1个宽度减小,这会导致其他TabControl收缩,而这2个未使用的列定义将填充剩余空间(width=“3”
)
删除那些未使用的列定义,并相应地调整GridSplitters和TabControl的Grid.Column
我猜你想让那些未使用的列定义用作边距。不要这样做,而是在TabControls上设置一些边距。发生这种情况是因为带有
Width=“*”
的3列定义将始终具有相同的宽度(这就是*,当其中一列的宽度改变时,其他所有列的宽度也会改变)。您可以为GridSplitter使用两个Width=“3”
列定义。移动拆分器时,TabControl的1个宽度减小,这会导致其他TabControl收缩,而这2个未使用的列定义将填充剩余空间(width=“3”
)
删除那些未使用的列定义,并相应地调整GridSplitters和TabControl的Grid.Column
我猜你想让那些未使用的列定义用作边距。不要这样做,改为在TabControls上设置一些边距。现在就可以了!非常感谢您的帮助!:)另外,如果我改为这样做,如何使场景选项卡控件的宽度变大而不会再次出现同样的问题您可以为相应的列定义设置width=“2*”。以星号为宽度单位的列将以给定的比率(在本例中为1:2:1)填充剩余空间。您可以在星号前添加任意数字来更改比率。在这里,您可以阅读更多关于WPF中列定义宽度的信息。顺便说一句,欢迎使用StackOverflow!如果我回答了你的问题,你能考虑通过点击复选来接受答案吗?如果你这样做了,你会让社区知道,你的问题已经解决了。此外,如果你认为任何问题、答案或评论有帮助/没有帮助,你也可以向上/向下投票。明白了,谢谢你,伙计!:)谢谢你欢迎我,当然了!:)现在可以了!非常感谢您的帮助!:)另外,如果我改为这样做,如何使场景选项卡控件的宽度变大而不会再次出现同样的问题您可以为相应的列定义设置width=“2*”。以星号为宽度单位的列将以给定的比率(在本例中为1:2:1)填充剩余空间。您可以在星号前添加任意数字来更改比率。在这里,您可以阅读更多关于WPF中列定义宽度的信息。顺便说一句,欢迎使用StackOverflow!如果我回答了你的问题,你能考虑通过点击复选来接受答案吗?如果你这样做了,你会让社区知道,你的问题已经解决了。此外,如果你认为任何问题、答案或评论有帮助/没有帮助,你也可以向上/向下投票。明白了,谢谢你,伙计!:)谢谢你欢迎我,当然了!:)