Выравнивание меню ленты приложения WPF справа?

При просмотре учебника «лента. ApplicationhMenu» всегда появляется в левой части экрана, а не в правой, как это происходит в Office 2007, Paint (в Windows 7) и WordPad (в Windows 7).

Есть ли способ изменить это?

Спасибо

(Пример проблемы здесь http://cid-a45fe702de180b23.skydrive.live.com/self.aspx/Public/RibbonAnnoyance.png (как новый пользователь я могу опубликовать только 1 гиперссылку))


person Community    schedule 29.09.2009    source источник


Ответы (2)


Спасибо за ваш ответ. Да, я использую Ribbon/FluentUI от команды Office.

Извините, мне не удалось войти в учетную запись «M.Ahrens», которую я создал около 22 часов назад (это была не учетная запись OpenID, и я не знаю, как войти в систему без OpenID, поэтому я теперь мой собственный OpenID).

Ранее я не мог опубликовать ссылку на учебник (поскольку новый пользователь может опубликовать только одну гиперссылку), но вот она: http://www.renevo.com/blogs/dotnet/archive/2009/02/10/your-first-wpf-ribbon-application.aspx

Это происходит не только в этом руководстве, это происходит в каждом другом ленточном приложении, которое я делаю (включая примеры Microsoft). Я пробовал поток:

*ГоризонтальноеВыравнивание="Вправо"

*HorizontalContentAlignment="Вправо"

*FlowDirection="RightToLeft" (заставляет ApplicationMenu перемещаться вправо, но переключает столбцы)

*По умолчанию

Но, похоже, ничего не изменилось, ApplicationMenu по-прежнему находится «слева» (если только я не разверну окно).

М.Аренс

+++++++++++++++++++++++++

Изменить (добавлен образец кода):

<r:RibbonWindow
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:r="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
    Height="400" Width="400">

    <DockPanel>
        <r:Ribbon DockPanel.Dock="Top">
            <r:Ribbon.ApplicationMenu>
                <r:RibbonApplicationMenu>
                </r:RibbonApplicationMenu>
            </r:Ribbon.ApplicationMenu>
        </r:Ribbon>
    </DockPanel>
</r:RibbonWindow>
person Malte Ahrens    schedule 30.09.2009
comment
Можете ли вы опубликовать выборку вашего кода XAML? Это значительно облегчит поиск проблемы. - person Alastair Pitts; 01.10.2009
comment
Приведенный образец выдает следующую ошибку: cid-a45fe702de180b23.skydrive.live .com/self.aspx/Общедоступный/ - person Malte Ahrens; 01.10.2009
comment
(Кажется, я не могу опубликовать комментарий к вашему ответу, и, поскольку я могу опубликовать только 1 гиперссылку, я опубликую свой комментарий здесь). Спасибо за ваш ответ (должно быть, я лег спать примерно за 10 минут до того, как вы его опубликовали). Я попробовал, но мне нужно было удалить «нижний колонтитул меню приложений», так как он не позволял ему быть пустым. К сожалению, это по-прежнему приносит ту же «ошибку» или «раздражение». Я разместил скриншот (cid-a45fe702de180b23.skydrive.live. com/self.aspx/Public/). - person Malte Ahrens; 02.10.2009
comment
Вау... хм, единственное, о чем я могу думать, это какая-то общесистемная настройка текста справа налево. Язык системы английский? Я такого еще не видел и не могу повторить. - person Alastair Pitts; 02.10.2009
comment
Системный язык австралийско-английский, и я использую Windows 7 RTM Enterprise. Таким образом, код, который вы разместили, не вызывает ту же «ошибку» / «раздражение», что и я? - person Malte Ahrens; 02.10.2009
comment
Нет. Это прямая копия кода из нашего приложения (со всеми удаленными кнопками и т.д.). Я также использую австралийско-английский язык, а также Win7 RC и Win7 RTM Pro. Пробовали без скина Office07? Я признаю, что хватаюсь за соломинку здесь, но я просто не могу найти причину, по которой это будет вести себя таким образом. - person Alastair Pitts; 04.10.2009
comment
Все предыдущие разы, когда я получал ошибку, будь то (например, в первом сообщении, как «m.ahrens») или код от вас, все это приводило к тому, что меню приложения ленты вело себя так. Я думаю, я попробую это на другом другом компьютере и посмотрю, работает ли он там лучше. - person Malte Ahrens; 05.10.2009
comment
Я проверял на Windows XP (с помощью Windows XP Mode), и как ни странно работает, см. скриншот (cid-a45fe702de180b23.skydrive.live.com/self.aspx/Public/). Единственное, что может быть связано с этим, это то, что у меня установлена ​​​​бета-версия .NET framework 4.0 ??? (Я использую .NET 3.5 и считаю, что ленточные проекты, которые я пробовал ранее, до .net4, также вызывали ошибку, но я не уверен). - person Malte Ahrens; 05.10.2009
comment
это очень интересно, re: 4.0 Beta. Сам не устанавливал, проверить не могу. Мое единственное предложение — (если возможно) удалить 4.0 BETA и проверить его. - person Alastair Pitts; 06.10.2009
comment
Я только что удалил бета-версию 4.0, и это, похоже, не имеет значения, кроме того факта, что я больше не могу создавать/открывать проекты (cid-a45fe702de180b23.skydrive.live.com/self.aspx/Public/ создание проектов .net 3.5). Похоже, мне нужно будет установить его снова или переустановить VS2008 и .NET 3.5 SP1. - person Malte Ahrens; 06.10.2009
comment
Мне жаль слышать это, приятель. Приносим извинения за ошибку, у меня сложилось впечатление (из блога MSDN), что удаление бета-версии 4.0 прошло нормально. Очевидно нет. Если возможно, не могли бы вы сделать базовый проект доступным для скачивания где-нибудь, чтобы я мог его протестировать. Надеюсь, мы сможем сузить его до вашей машины. - person Alastair Pitts; 06.10.2009
comment
Да, это было бы здорово, я не думаю, что его загрузка поможет, так как создание нового проекта 3.5 с предоставленным вами образцом кода, а *.exe не отображает правильно меню приложений ленты, но XP делает это. - person Malte Ahrens; 07.10.2009

Вы используете ленту WPF от команды OfficeUI?

Мы пользуемся этим и ничего подобного не происходит. Возможно, опубликуйте некоторые из XAML, которые вы используете для создания меню приложения.

РЕДАКТИРОВАТЬ: Взглянув на ваш код, я подозреваю, что DockPanel немного глуп.

Вот как мы структурируем макет, чтобы добавить ленту

<r:RibbonWindow x:Class="MyAssembly.Main"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:r="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
Title="The Title"
Height="450" 
Width="600" >

<Grid x:Name="grdMain">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <r:Ribbon Title="The Title" x:Name="ribbonMain" Grid.Row="0">
        <!--Quick Access Toolbar-->
        <r:Ribbon.QuickAccessToolBar>
            <r:RibbonQuickAccessToolBar>
            </r:RibbonQuickAccessToolBar>
        </r:Ribbon.QuickAccessToolBar>

        <!--Application Menu-->
        <r:Ribbon.ApplicationMenu>
            <r:RibbonApplicationMenu x:Name="mnuApplication">
                <!--App Menu Items-->
                <r:RibbonApplicationMenu.Items>
                </r:RibbonApplicationMenu.Items>
                <!--App Menu Recent Item List-->
                <r:RibbonApplicationMenu.RecentItemList>
                    <StackPanel>
                        <r:RibbonLabel>Recent Items</r:RibbonLabel>
                        <r:RibbonSeparator/>
                        <r:RibbonHighlightingList x:Name="lstRecentItems"/>
                    </StackPanel>
                </r:RibbonApplicationMenu.RecentItemList>
                <!--App Menu Footer-->
                <r:RibbonApplicationMenu.Footer>
                </r:RibbonApplicationMenu.Footer>
            </r:RibbonApplicationMenu>
        </r:Ribbon.ApplicationMenu>
    </r:Ribbon>

    <Grid Grid.Row="1">
      <!--This is the aread under the ribbon. Place layout things inside of this space-->
    </Grid>
</Grid> </r:RibbonWindow> <!--This is closing tag is on this line as SO is being silly-->

Как я уже упоминал, я подозреваю, что DockPanel просто немного глуп, хотя сейчас немного поздно (12 часов ночи), чтобы протестировать его прямо сейчас. Попробуйте скопировать этот код в свой XAML и посмотрите, что произойдет.

Честно говоря, я не очень доверяю DockPanels, для меня сетки работают намного лучше :D

person Alastair Pitts    schedule 30.09.2009