Я использую RibbonControlsLibrary. Как выровнять одну RibbonGroup вправо? В табл. должна быть только одна группа. Все остальные группы должны быть выровнены по левому краю.
Как выровнять RibbonGroup вправо?
Ответы (5)
Вы не можете выровнять RibbonGroup вправо. Лента не предоставляет возможности сделать это.
Что вы можете сделать, так это выровнять элементы заголовка страницы... но я не знаю, достаточно ли вам этого: ДевЭкспресс
У меня была такая же проблема, и я наконец нашел что-то сделать:
У меня есть 3 RibbonGroupBox. Groupe1 может быть выровнена по левому краю, Groupe3 может быть выровнена по правому краю. Groupe2 — это просто пустой RibbonGroupBox, который я вставил между Groupe1 и Groupe3.
Код XAML:
<Fluent:Ribbon DockPanel.Dock="Top" Title="{x:Static p:Resources.MiseEnBarre}" x:Name="mainRibbon">
<Fluent:RibbonTabItem x:Name="MainMenu" Header="{x:Static p:Resources.MainMenu}" SizeChanged="MainMenu_SizeChanged">
<Fluent:RibbonGroupBox x:Name="Groupe1">
<Fluent:Button x:Name="autoNest" SizeDefinition="Large" LargeIcon="img\image_bar_Nesting.png" Header="{x:Static p:Resources.MenuAutoNest}" Click="AutoNest_Click" />
<Fluent:Button x:Name="saveFile" SizeDefinition="Large" LargeIcon="img\image_save.png" Header="{x:Static p:Resources.MenuSauvegarder}" Click="Sauvegarder_Click" />
</Fluent:RibbonGroupBox>
<Fluent:RibbonGroupBox x:Name="Groupe2">
</Fluent:RibbonGroupBox>
<Fluent:RibbonGroupBox x:Name="Groupe3">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=AvailableCNClist}" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" Text="{Binding Path=AvailableCNClist2}" HorizontalAlignment="Right"/>
</Grid>
</Fluent:RibbonGroupBox>
</Fluent:RibbonTabItem>
</Fluent:Ribbon>
Затем, чтобы управлять изменением размеров Windows, я добавляю в свое главное окно событие SizeChanged=MainWindow_SizeChanged (в случае, если размеры RibbonGroupBox также могут измениться, просто добавьте к ним то же событие).
private void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e)
{
UpdateAlignRibbon();
}
private void UpdateAlignRibbon()
{
Groupe2.Width = MyWindow.ActualWidth - Groupe1.ActualWidth - Groupe3.ActualWidth;
}
В моем случае Groupe3 RibbonGroupBox может изменить размер, поэтому я вызываю UpdateAlignRibbon() из 3 точек:
- После инициализации моего окна (включая определение содержимого GroupBoxes)
- Когда размеры MainWindow изменились
- Когда Groupe1 или Groupe3 изменили свои размеры
Ровер, вы можете попробовать добавить RibbonGroup между последней левой RibbonGroup и выровнять RibbonGroup по правому краю и назначить размер вновь добавленной ленте, связанной с размером окна.
пример <RibbonGroup Width="400"></RibbonGroup>
это выглядит следующим образом
Вы можете взломать выравнивание, но я бы не рекомендовал этого делать.
<r:RibbonGroup Header="This is a Filler Header With No Functionality but to Take Up Space" Visibility="Hidden">
<s:RibbonButton2/>
<s:RibbonButton2/>
<s:RibbonButton2/>
<s:RibbonButton2/>
</r:RibbonGroup>
Заказчик хотел разместить свой логотип на ленте в верхней части страницы, но чем больше вы добавляете «ложных» элементов на панель, тем быстрее «настоящие» элементы разрушатся при уменьшении размера окна.
Попробуй это:
<RibbonTab Header="Home" x:Name="rtabHome" FlowDirection="RightToLeft" >
<RibbonGroup Header="Group">
<TextBlock Text="Example"/>
</RibbonGroup>
</RibbonTab>
Работает с FlowDirection="RightToLeft".