1

正如我们所知,双击功能区控件上的选项卡会打开菜单并使其保持固定,直到用户再次双击任一选项卡。这基本上会调整功能区下方的行的大小。有没有办法可以控制这种调整大小的行为?我希望它从行的上部调整它的大小,但保持行的底部固定。这样做的目的是将用户控件放置在功能区下方的行中,该功能区底部有一个工具栏。由于双击工具栏位于第三行下方并被隐藏& 仅在用户再次双击功能区时可见。因此,如果我可以控制调整大小行为以使行从底部保持固定,即使用户双击功能区,我也可以查看工具栏。有没有办法可以做到这一点?任何帮助/建议将不胜感激。

编辑:添加示例 XAML 以便更清楚地理解。

<RibbonWindow>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto/>
            <RowDefinition Height="*"/>
            <RowDefinition Height=30/>
        </Grid.RowDefinitions>
        <Ribbon Grid.Row=0/>
        <UserControlWithEmbeddedToolbarHere Grid.Row=1/>
        <!--The toolbar is embedded within the user control &
            placed at the bottom of the user control-->
        <StatusBarHere Grid.Row=2/>
    </Grid>
</RibbonWindow>
4

1 回答 1

2

您的窗口应该在 RowDefinitions 中包含一个 MinHeight,它是工具栏的高度:

<Window>
    <Grid>
        <Grid.RowDefinitions>
           <RowDefinition Height="Auto"/>
           <RowDefinition Height="*" MinHeight="40"/>
           <RowDefinition Height="30"/>
        </Grid.RowDefinitions>
        <Ribbon Grid.Row="0">
        </Ribbon>
        <UserControlHere Grid.Row="1">
        </UserControlHere>
        <StatusBar Grid.Row="2">
        </StatusBar>
    </Grid>
</Window>

带有工具栏的用户控件:

<UserControl>
    <Grid>
        <Grid.RowDefinitions>
           <RowDefinition Height="*"/>
           <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid>
           Everything else
        </Grid>
        <ToolbarHere Grid.Row="1">
        </ToolbarHere>
    </Grid>
</Window>

在您的用户控件中,通过为您的工具栏指定一个高度,您“确保”它将在您的网格中获得一个空间。Height="*" 是分配“自动”(这是您的工具栏所需的空间)之后的“其他所有内容”。

您的窗口首先为功能区创建空间,然后是状态栏,然后是您的用户控件(因为 Height="*")。如果您渲染的功能区是(让我们说......)40并且您的状态栏是30,正如您提到的并且您的窗口高度是80,那么您的用户控件将只有高度10(80-40-30),因此您可能不会在您的用户控件中查看您的工具栏。

考虑添加一个滚动查看器来包装你的用户控件,或者为你的窗口设置一个最小高度。

于 2013-12-06T06:50:38.813 回答