Как выровнять RibbonGroup вправо?

Я использую RibbonControlsLibrary. Как выровнять одну RibbonGroup вправо? В табл. должна быть только одна группа. Все остальные группы должны быть выровнены по левому краю.


person Rover    schedule 27.07.2012    source источник


Ответы (5)


Вы не можете выровнять RibbonGroup вправо. Лента не предоставляет возможности сделать это.

Что вы можете сделать, так это выровнять элементы заголовка страницы... но я не знаю, достаточно ли вам этого: ДевЭкспресс

person mlemay    schedule 27.07.2012
comment
Я использую библиотеку управления лентой MS. Мне не нужно выравнивание заголовков. Может кто знает какие лайфхаки... - person Rover; 27.07.2012
comment
@Rover Я опубликовал для вас возможное решение ... если вы все еще работаете над этим 3 с половиной года спустя! - person HireThisMarine; 21.04.2016

У меня была такая же проблема, и я наконец нашел что-то сделать:

У меня есть 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 изменили свои размеры
person Siegfried.V    schedule 12.07.2018

Ровер, вы можете попробовать добавить RibbonGroup между последней левой RibbonGroup и выровнять RibbonGroup по правому краю и назначить размер вновь добавленной ленте, связанной с размером окна.

пример <RibbonGroup Width="400"></RibbonGroup>

это выглядит следующим образом

введите здесь описание изображения

person Satish    schedule 27.03.2014
comment
Размер окна можно изменить. Другие RibbonGroups могут иметь разную ширину. - person Rover; 27.03.2014

Вы можете взломать выравнивание, но я бы не рекомендовал этого делать.

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

Заказчик хотел разместить свой логотип на ленте в верхней части страницы, но чем больше вы добавляете «ложных» элементов на панель, тем быстрее «настоящие» элементы разрушатся при уменьшении размера окна.

person HireThisMarine    schedule 21.04.2016

Попробуй это:

<RibbonTab Header="Home" x:Name="rtabHome" FlowDirection="RightToLeft" >
    <RibbonGroup Header="Group">
            <TextBlock Text="Example"/>
     </RibbonGroup>
</RibbonTab>

Работает с FlowDirection="RightToLeft".

person adolus    schedule 29.07.2016