在 UserControl 中托管时,工具栏不显示溢出

Toolbar isn't showing overflow when hosted in UserControl

托管在Window,我有一个主UserControl由其他UserControls组成。

其中一个包含一个 ToolBar,上面有几个 Buttons。我通过将它的 Grid.Row 属性 设置为 0 将它放在我的主 UserControl 的顶部。但是,当 Window 变小时, Buttons 就会消失并且不会显示溢出。我有点弄乱了溢出属性,但没有运气。

这是包含 ToolBarUserControl

<UserControl x:Class="TestProj.Views.ToolBarView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         mc:Ignorable="d" 
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="706"/>
            <ColumnDefinition Width="319"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>
        <ToolBar Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">
            <Button Content="Button1" />
            <Button Content="Button2" />
            <Button Content="Button3" />
            <Button Content="Button4" />
            <Button Content="Button5" />
            <Button Content="Button6" />
        </ToolBar>
    </Grid>
</UserControl>

这是我的主要 UserControl,托管在 Window 内,并托管 ToolBar UserControl:

<UserControl x:Class="TestProj.MainControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:views="clr-TestProj.Views"
             mc:Ignorable="d" d:DesignHeight="737.239" d:DesignWidth="1026"
             VerticalAlignment="Stretch"
             HorizontalAlignment="Stretch">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="256*"/>
            <ColumnDefinition Width="256*"/>
            <ColumnDefinition Width="256*"/>
            <ColumnDefinition Width="430*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto">
            </RowDefinition>
            <RowDefinition Height="608*"/>
            <RowDefinition Height="Auto">
            </RowDefinition>
        </Grid.RowDefinitions>
        <views:ToolBarView HorizontalAlignment="Left" x:Name="OnyxToolBar" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" />
    </Grid>
</UserControl>

这是我调整 Window 大小的 .gif 示例,就在 UserControl 包含 ToolBar 的顶部:

问题是您的 UserControl aka ToolBarView 中固定大小的列

你不能给某些控件(不管它是否是工具栏)一个固定大小的值并期望有 "dynamic size"

在你的情况下你可以这样做

改变这个

<Grid.ColumnDefinitions>
     <ColumnDefinition Width="706"/>
     <ColumnDefinition Width="319"/>
</Grid.ColumnDefinitions>

以这个(为例)

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