【问题标题】:Ribbon control double click functionality功能区控制双击功能
【发布时间】:2013-11-02 01:48:18
【问题描述】:

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

编辑:添加示例 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>

【问题讨论】:

    标签: wpf ribbon double-click ribbon-control


    【解决方案1】:

    您的窗口应该在 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="*" 是分配“Auto”(您的工具栏需要的空间)之后的“其他所有内容”。

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

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

    【讨论】:

    • 我之前试过这个,不行。 工具栏不是一个单独的控件,它位于用户控件本身内。 我面临的问题是,由于工具栏位于用户控件的下半部分,因此它折叠或隐藏在状态栏后面(当用户双击功能区栏时,显示某些带有标签的详细信息的网格。为了您的方便,我在上面添加了一个示例 XAML。
    • 感谢您的回复。它仍然不起作用。原因:即使我为用户控件设置了最小高度,功能区展开后用户控件可用的空间也很容易超过最小高度。并且嵌入的工具栏(工具栏在用户控件的底部)仍然折叠。您能否通过添加包装用户控件的滚动查看器来解释您的意思?您的意思是当窗口缩小时,会出现一个滚动条并且我可以向下滚动以查看工具栏?
    • 从“并且嵌入的工具栏(工具栏在用户控件的底部)仍然折叠”,在我看来你没有根据我上面的sn-p定义你的工具栏。您必须在用户控件中定义您的工具栏以使用 Height="Auto" 和 其他所有内容为 Height="*" 以便它始终显示您的工具栏,然后 将此用户控件添加到您的窗口中,该窗口已定义 MinHeight。
    • 我的用户控件的定义与您的代码 sn-p 完全相同。但它似乎仍然不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    相关资源
    最近更新 更多