Функция двойного щелчка мышью

Как мы знаем, двойной щелчок по вкладкам на ленте управления открывает меню и сохраняет его, пока пользователь снова не щелкнет дважды на любой из вкладок. Это в основном изменяет размер строки под лентой. Есть ли способ, которым я могу контролировать это поведение изменения размера? Я хочу изменить размер верхней части строки, но оставить нижнюю часть фиксированной. Цель этого состоит в том, чтобы пользовательский элемент управления размещался в ряду под лентой, в нижней части которого находится панель инструментов. В результате двойного щелчка панель инструментов находится под третьей строкой, скрывается и отображается только при повторном щелчке пользователя по ленте. Поэтому, если я смогу контролировать поведение изменения размера, чтобы сохранить строку фиксированной снизу, я мог бы просматривать панель инструментов, даже когда пользователь дважды щелкает ленту. Есть ли способ, которым я могу достичь этого? Любая помощь / предложение будет оценено.

РЕДАКТИРОВАТЬ: Добавление образца XAML для более ясного понимания. `

<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>

`

1 ответ

Ваше окно должно содержать MinHeight в RowDefinitions, который является высотой панели инструментов:

<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 с панелью инструментов:

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

В вашем пользовательском контроле, указав высоту для панели инструментов, вы "гарантируете", что ей будет предоставлено пространство в вашей сетке. Высота ="*" - это "все остальное" после того, как "Авто" (то есть пространство, необходимое вашей панели инструментов) было выделено.

Ваше окно сначала создает пространство для ленты, а затем строку состояния, затем ваш пользовательский контроль (из-за высоты ="*"). Если ваша визуализированная лента (скажем так...) 40, а ваша строка состояния равна 30, как вы упомянули, а высота вашего окна равна 80, ваш пользовательский контроль будет иметь высоту только 10 (80-40-30), поэтому вы можете этого не делать. увидеть вашу панель инструментов в вашем пользовательском контроле.

Подумайте о том, чтобы добавить scrollviewer, обертывающий пользовательский контроль, или установить минимальную высоту для вашего окна.

Другие вопросы по тегам