【发布时间】:2020-05-06 18:18:33
【问题描述】:
我开始在这个新世界工作,我有一些编程背景,但不是 wpf/xaml。 我遇到了 TabControl 的问题。
我不知道为什么,即使使用 Width="Auto" 或 HorizontalAlignment="Stretch" 我也无法弄清楚如何。
Please see this picture to see the result
我正在尝试将 tabitem 的结尾移到屏幕的末尾,使用右侧的所有空间并固定,例如使用 width=100%。
有人可以帮我解决这个问题吗?
提前致谢。
这是代码
<DockPanel Height="auto" Width="Auto" Background="#FFF0EEEE"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
LastChildFill="True">
<ScrollViewer IsTabStop="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Width="auto" HorizontalAlignment="Stretch">
<!--<TextBlock DockPanel.Dock="Top" Style="{DynamicResource H4}"
>Start</TextBlock>-->
<Grid Name="body" Width="auto" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Row="0" Grid.Column="0" Width="auto" HorizontalAlignment="Stretch" >
<materialDesign:Card Padding="32" Margin="16">
<WrapPanel DockPanel.Dock="Top" Orientation="Vertical" >
<TextBlock Style="{DynamicResource H5}">project</TextBlock>
<TextBlock FontWeight="Medium" FontSize="14.4" Style="{DynamicResource Roboto}" Width="Auto" HorizontalAlignment="Stretch">
<TabControl Margin="10" HorizontalAlignment="Stretch" BorderBrush="#0E5080" BorderThickness="1" Width="auto" >
<TabItem Header="Home 1" Width="auto" HorizontalAlignment="Stretch">
<TextBlock>asd asd asd asd asd asd asd asd asd asd asd asd asd asd asd asd asd asd asd asd </TextBlock>
</TabItem>
<TabItem Header="Home 2" Name="test2" HorizontalAlignment="Stretch">
<TextBlock>asd local</TextBlock>
</TabItem>
<TabItem Header="Home 3" Name="test3" Width="Auto">
<TextBlock>asd ftp</TextBlock>
</TabItem>
<TabItem Header="Home 3">
<TextBlock>asd sftp</TextBlock>
</TabItem>
</TabControl>
</TextBlock>
</WrapPanel>
</materialDesign:Card>
</Grid>
<Grid Grid.Row="1" Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition Height="43*"/>
<RowDefinition Height="77*"/>
</Grid.RowDefinitions>
<materialDesign:Card Padding="32" Margin="16,16,16,16" Grid.RowSpan="2">
<Label>asd</Label>
</materialDesign:Card>
</Grid>
</Grid>
</ScrollViewer>
</DockPanel>
【问题讨论】:
-
嗨,欢迎来到 SO。我没有尝试运行您的 xaml,但我有一些观察结果: 1) TextBlock 内的 TabControl?这似乎是个坏主意。 2) 在这种情况下,WrapPanel 在我看来也是一个不错的面板,可以用 StackPanel 代替。可以帮助您为容器的背景着色,以便您了解需要设置宽度的元素