Как выровнять RibbonGroup вправо?
Я использую RibbonControlsLibrary. Как выровнять одну RibbonGroup вправо? Должна быть только одна группа в табл. Все остальные группы должны быть выровнены влево.
5 ответов
Вы не можете выровнять RibbonGroup вправо. Лента не дает возможности сделать это.
Что вы можете сделать, это выровнять элементы заголовка страницы... но я не знаю, достаточно ли это для вас: DevExpress
Я знаю, что его пост давно устарел, но у меня была та же проблема, и я наконец нашел что-то для этого:
У меня есть 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 изменили свои размеры
Попробуй это:
<RibbonTab Header="Home" x:Name="rtabHome" FlowDirection="RightToLeft" >
<RibbonGroup Header="Group">
<TextBlock Text="Example"/>
</RibbonGroup>
</RibbonTab>
Работает с FlowDirection="RightToLeft".
Rover, Вы можете попробовать добавить RibbonGroup между последней левой RibbonGroup и Right выравнивание 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>
Клиент хотел, чтобы его логотип был на ленте в верхней части страницы, но чем больше вы добавляете "ложных" элементов на панель, тем быстрее "истинные" элементы разрушаются при уменьшении размера окна.