Функция двойного щелчка мышью
Как мы знаем, двойной щелчок по вкладкам на ленте управления открывает меню и сохраняет его, пока пользователь снова не щелкнет дважды на любой из вкладок. Это в основном изменяет размер строки под лентой. Есть ли способ, которым я могу контролировать это поведение изменения размера? Я хочу изменить размер верхней части строки, но оставить нижнюю часть фиксированной. Цель этого состоит в том, чтобы пользовательский элемент управления размещался в ряду под лентой, в нижней части которого находится панель инструментов. В результате двойного щелчка панель инструментов находится под третьей строкой, скрывается и отображается только при повторном щелчке пользователя по ленте. Поэтому, если я смогу контролировать поведение изменения размера, чтобы сохранить строку фиксированной снизу, я мог бы просматривать панель инструментов, даже когда пользователь дважды щелкает ленту. Есть ли способ, которым я могу достичь этого? Любая помощь / предложение будет оценено.
РЕДАКТИРОВАТЬ: Добавление образца 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, обертывающий пользовательский контроль, или установить минимальную высоту для вашего окна.