How to hide the ribbon in a RibbonWindow

May 18, 2011 at 11:16 AM
Edited May 18, 2011 at 11:17 AM

Our application uses PRISM and its shell is a RibbonWindow, as we want to use a ribbon interface.

However, at first it shows a login window, and the ribbon should not be displayed.

Only after the user logs in, we want to show the ribbon.

Is there a way to show a RibbonWindow with no ribbon? Hiding the ribbon by setting it Visible property to Collapsed cause the window content to override the window title. Moving the content dohelps, but the title text is still not displayed. I would love to hear any advice on this.

 

Thanks,

splintor

May 19, 2011 at 6:40 AM

Yes...

you have to do something like this for the Shell:

<Fluent:RibbonWindow  x:Class="Prosoz.Client.RichClient.Workbench.Views.WorkbenchView"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:inf="clr-namespace:Prosoz.Core.Infrastructure;assembly=Prosoz.Core.Infrastructure"
                 xmlns:Fluent="clr-namespace:Fluent;assembly=Fluent"
                 xmlns:cal="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"                
                 WindowStartupLocation="CenterScreen"
                 ScrollViewer.VerticalScrollBarVisibility="Disabled" 
                 WindowState="Maximized"  
                 Background="{DynamicResource WindowBackground}" 
                 Icon="pack://application:,,,/Prosoz.Client.RichClient.Styles;component/Images/Logos/prosoz.png">
 
    <AdornerDecorator>
        <DockPanel Name="mainPane">
            <!-- Container für die Menüleiste-->
            <ItemsControl DockPanel.Dock="Top" 
                          HorizontalAlignment="Stretch" 
                          Width="Auto" 
                          cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainRibbonBarRegion}"/>
        
            <!-- Container für DockPanel-->
 
 
            <ItemsControl DockPanel.Dock="Top"
                    HorizontalAlignment="Stretch" 
                    VerticalAlignment="Stretch" 
                    Width="Auto" 
                    Height="Auto" 
                    cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainRegion}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <DockPanel/> 
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
            </ItemsControl>
        </DockPanel>
    </AdornerDecorator>
</Fluent:RibbonWindow>
 
The loaded module have to inject the ribbon to the "MainRibbonBarRegion" and the content to the "MainRegion"
 
This Works for me ;-)
 
May 19, 2011 at 5:33 PM

Thanks for your reply.

I didn’t understand from your reply how you hide and show the ribbon, and if it works correctly for you.

Can you update?

Thanks,

Shmulik

From: okihn [email removed]
Sent: Thursday, May 19, 2011 9:41 AM
To: splintor@gmail.com
Subject: Re: How to hide the ribbon in a RibbonWindow [fluent:258059]

From: okihn

Yes...

you have to do something like this for the Shell:

<Fluent:RibbonWindow  x:Class="Prosoz.Client.RichClient.Workbench.Views.WorkbenchView"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:inf="clr-namespace:Prosoz.Core.Infrastructure;assembly=Prosoz.Core.Infrastructure"
                 xmlns:Fluent="clr-namespace:Fluent;assembly=Fluent"
                 xmlns:cal="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"                
                 WindowStartupLocation="CenterScreen"
                 ScrollViewer.VerticalScrollBarVisibility="Disabled" 
                 WindowState="Maximized"  
                 Background="{DynamicResource WindowBackground}" 
                 Icon="pack://application:,,,/Prosoz.Client.RichClient.Styles;component/Images/Logos/prosoz.png">
 
    <AdornerDecorator>
        <DockPanel Name="mainPane">
            <!-- Container für die Menüleiste-->
            <ItemsControl DockPanel.Dock="Top" 
                          HorizontalAlignment="Stretch" 
                          Width="Auto" 
                          cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainRibbonBarRegion}"/>
        
            <!-- Container für DockPanel-->
 
 
            <ItemsControl DockPanel.Dock="Top"
                    HorizontalAlignment="Stretch" 
                    VerticalAlignment="Stretch" 
                    Width="Auto" 
                    Height="Auto" 
                    cal:RegionManager.RegionName="{x:Static inf:RegionNames.MainRegion}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <DockPanel/> 
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
            </ItemsControl>
        </DockPanel>
    </AdornerDecorator>
</Fluent:RibbonWindow>
 
The loaded module have to inject the ribbon to the "MainRibbonBarRegion" and the content to the "MainRegion"
 
This Works for me ;-)
 
May 20, 2011 at 5:35 AM

Ok...

I do following steps:

1. bootstrapper loads the shell -> with the xaml from my example there will no ribbon show.

2. shell do the login

3. after login the module loads

4. in modules "Initialize" Method i inject a ribbon in the region "MainRibbonBarRegion"

            _prosozbauRibbonView = _container.Resolve<IProsozBauRibbonView>();
            _regionManager.RegisterViewWithRegion(RegionNames.MainRibbonBarRegion, () => _prosozbauRibbonView);
The _container and _regionManager i get via DI when the module's constructor is called

        public Module(IUnityContainer container, IEventAggregator eventAggregator, IRegionManager regionManager)
         {
             _container = container;
             _regionManager = regionManager;            
            _eventAggregator = eventAggregator;
         }
the "IProsozBauRibbonView" is a normal Usercontrol it's Xamll looks like this:

 

<Fluent:Ribbon x:Class="Prosoz.Client.RichClient.Modules.ProsozBau.Gui.Views.ProsozBauRibbonView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Resources="clr-namespace:Prosoz.Client.RichClient.Modules.ProsozBau.Resources"
    xmlns:Views="clr-namespace:Prosoz.Client.RichClient.Modules.ProsozBau.Gui.Views"
    xmlns:Fluent="clr-namespace:Fluent;assembly=Fluent"
    xmlns:MyConverter="clr-namespace:Prosoz.Client.RichClient.Modules.ProsozBau.Gui.Converter"
    x:Name="ribbon" 
    DockPanel.Dock="Top"
    Title="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=Title}"
>
 
    <Fluent:Ribbon.Resources>
 
        <MyConverter:ParameterContentConverter x:Key="ParameterContentConverter"/>
 
 
        <DataTemplate x:Key="FavoriteTemplate">
            <Grid Margin="0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="45"/>
                    <ColumnDefinition Width="*" MinWidth="500"/>
                    <ColumnDefinition Width="150"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="30"/>
                    <RowDefinition Height="25"/>
                </Grid.RowDefinitions>
                <!--<Image Grid.Column="0" Grid.RowSpan="2" Source="{Binding Converter={StaticResource FavoriteToImage}}" Stretch="Fill" Width="32" Height="32" Margin="2" />
                <Label Grid.Column="1" Grid.Row="0" FontSize="16" FontWeight="Bold" Content="{Binding Converter={StaticResource FavoriteToCaption}}"/>
                <Label Grid.Column="1" Grid.Row="1" Content="{Binding Converter={StaticResource FavoriteToCreationUserTime}}"/>
                <Label Grid.Column="2" Grid.Row="0" FontWeight="Bold" Content="zuletzt benutzt"/>
                <Label Grid.Column="2" Grid.Row="1" Content="{Binding Converter={StaticResource FavoriteToLastUsageTime}}"/>-->
 
            </Grid>
        </DataTemplate>
 
        <Style TargetType="{x:Type ListBox}" x:Key="FavoriteList" >
            <Setter Property="ItemTemplate" Value="{StaticResource FavoriteTemplate}"/>
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Vertical"/>
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
        </Style>
 
 
    </Fluent:Ribbon.Resources>
 
    <!-- Help Button -->
    <Fluent:Ribbon.ToolBarItems>
        <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Help, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small"/>
    </Fluent:Ribbon.ToolBarItems>
 

 
    <!--Contextual Tab Groups-->
    <Fluent:Ribbon.ContextualGroups>
        <Fluent:RibbonContextualTabGroup Header="Tools" Visibility="Visible" x:Name="toolsGroup" Background="Green" BorderBrush="Green" />
    </Fluent:Ribbon.ContextualGroups>
 
    <!--Quick Access Toolbar Items-->
    <Fluent:Ribbon.QuickAccessItems>
        <!--Use Content or Target Property to set QAT item-->
        <Fluent:QuickAccessMenuItem IsChecked="True" Header="Speichern" >
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding QuickAccessSave}" Size="Small"/>
        </Fluent:QuickAccessMenuItem>
        <Fluent:QuickAccessMenuItem IsChecked="True" Header="Modul wechseln" >
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding QuickAccessChangeModule}" Size="Small"/>
        </Fluent:QuickAccessMenuItem>
    </Fluent:Ribbon.QuickAccessItems>
 
 
    <!--Tabs-->
    <Fluent:RibbonTabItem x:Name="Tab1" Header="{x:Static Resources:Strings.Caption_Tab_1}">
        <Fluent:RibbonGroupBox x:Name="Verfahren" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=Verfahren}">
            <Fluent:DropDownButton Style="{DynamicResource FluentDropDownButton}" DataContext="{Binding Path=DataContext.Vorgang, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}">
                <Fluent:MenuItem Style="{DynamicResource FluentMenueItem}" DataContext="{Binding Path=DataContext.OpenVorgang, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
                <Fluent:MenuItem Style="{DynamicResource FluentMenueItem}" DataContext="{Binding Path=DataContext.NewVorgang, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
                <Fluent:MenuItem Style="{DynamicResource FluentMenueItem}" DataContext="{Binding Path=DataContext.SearchVorgang, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
            </Fluent:DropDownButton>
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.AzInfo, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Vermerk, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Media, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Gis, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
        </Fluent:RibbonGroupBox>
        <Fluent:RibbonGroupBox x:Name="User" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=User}">
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Wv, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.AllgWv, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.History, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.LastSearch, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Logoff, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
        </Fluent:RibbonGroupBox>
        <Fluent:RibbonGroupBox x:Name="Inet" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=Inet}">
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Mail, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.OnlineInbox, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.OnlineUser, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Eingangsbuch, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
        </Fluent:RibbonGroupBox>
        <Fluent:RibbonGroupBox x:Name="Tools" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=Tools}">
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Info, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Calculator, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Appointment, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Contact, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
        </Fluent:RibbonGroupBox>
    </Fluent:RibbonTabItem>
 
    <Fluent:RibbonTabItem x:Name="Tab3" Header="{x:Static Resources:Strings.Caption_Tab_3}">
        <Fluent:RibbonGroupBox x:Name="Tools3" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=Tools}">
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Info, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Calculator, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}"  Size="Small"/>
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Appointment, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}"  Size="Small"/>
            <Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Contact, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
        </Fluent:RibbonGroupBox>       
    </Fluent:RibbonTabItem>
</Fluent:Ribbon>

hope it helps

 

Oliver

May 22, 2011 at 6:42 AM

Hi Oliver and thanks a lot for your kind help.

I’m currently mainly interested not by the PRISM injection of the ribbon, but how RibbonWindow looks when it contains no ribbon (or a hidden ribbon).

In my tests, it seems that it doesn’t look like a normal window. It shows no text in the title, and if it has no content, then the title looks too high – it looks like a space is left for a menu:

If I add some content to the window, it is added over the title, instead of below it:

It seems like RibbonWindow template is not designed for not showing a ribbon.

Don’t you have similar problems? Can you send a screenshot of your login screen?

Thanks a lot,

Shmulik

From: okihn [email removed]
Sent: Friday, May 20, 2011 8:36 AM
To: splintor@gmail.com
Subject: Re: How to hide the ribbon in a RibbonWindow [fluent:258059]

From: okihn

Ok...

I do following steps:

1. bootstrapper loads the shell -> with the xaml from my example there will no ribbon show.

2. shell do the login

3. after login the module loads

4. in modules "Initialize" Method i inject a ribbon in the region "MainRibbonBarRegion"

_prosozbauRibbonView = _container.Resolve<IProsozBauRibbonView>();
_regionManager.RegisterViewWithRegion(RegionNames.MainRibbonBarRegion, () => _prosozbauRibbonView);
The _container and _regionManager i get via DI when the module's constructor is called

public Module(IUnityContainer container, IEventAggregator eventAggregator, IRegionManager regionManager)
{
_container = container;
_regionManager = regionManager;
_eventAggregator = eventAggregator;
}
the "IProsozBauRibbonView" is a normal Usercontrol it's Xamll looks like this:

<Fluent:Ribbon x:Class="Prosoz.Client.RichClient.Modules.ProsozBau.Gui.Views.ProsozBauRibbonView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Resources="clr-namespace:Prosoz.Client.RichClient.Modules.ProsozBau.Resources"
xmlns:Views="clr-namespace:Prosoz.Client.RichClient.Modules.ProsozBau.Gui.Views"
xmlns:Fluent="clr-namespace:Fluent;assembly=Fluent"
xmlns:MyConverter="clr-namespace:Prosoz.Client.RichClient.Modules.ProsozBau.Gui.Converter"
x:Name="ribbon"
DockPanel.Dock="Top"
Title="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=Title}"
>

<Fluent:Ribbon.Resources>

<MyConverter:ParameterContentConverter x:Key="ParameterContentConverter"/>


<DataTemplate x:Key="FavoriteTemplate">
<Grid Margin="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="45"/>
<ColumnDefinition Width="*" MinWidth="500"/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="25"/>
</Grid.RowDefinitions>
<!--<Image Grid.Column="0" Grid.RowSpan="2" Source="{Binding Converter={StaticResource FavoriteToImage}}" Stretch="Fill" Width="32" Height="32" Margin="2" />
<Label Grid.Column="1" Grid.Row="0" FontSize="16" FontWeight="Bold" Content="{Binding Converter={StaticResource FavoriteToCaption}}"/>
<Label Grid.Column="1" Grid.Row="1" Content="{Binding Converter={StaticResource FavoriteToCreationUserTime}}"/>
<Label Grid.Column="2" Grid.Row="0" FontWeight="Bold" Content="zuletzt benutzt"/>
<Label Grid.Column="2" Grid.Row="1" Content="{Binding Converter={StaticResource FavoriteToLastUsageTime}}"/>-->

</Grid>
</DataTemplate>

<Style TargetType="{x:Type ListBox}" x:Key="FavoriteList" >
<Setter Property="ItemTemplate" Value="{StaticResource FavoriteTemplate}"/>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>


</Fluent:Ribbon.Resources>

<!-- Help Button -->
<Fluent:Ribbon.ToolBarItems>
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Help, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small"/>
</Fluent:Ribbon.ToolBarItems>


<!--Contextual Tab Groups-->
<Fluent:Ribbon.ContextualGroups>
<Fluent:RibbonContextualTabGroup Header="Tools" Visibility="Visible" x:Name="toolsGroup" Background="Green" BorderBrush="Green" />
</Fluent:Ribbon.ContextualGroups>

<!--Quick Access Toolbar Items-->
<Fluent:Ribbon.QuickAccessItems>
<!--Use Content or Target Property to set QAT item-->
<Fluent:QuickAccessMenuItem IsChecked="True" Header="Speichern" >
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding QuickAccessSave}" Size="Small"/>
</Fluent:QuickAccessMenuItem>
<Fluent:QuickAccessMenuItem IsChecked="True" Header="Modul wechseln" >
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding QuickAccessChangeModule}" Size="Small"/>
</Fluent:QuickAccessMenuItem>
</Fluent:Ribbon.QuickAccessItems>


<!--Tabs-->
<Fluent:RibbonTabItem x:Name="Tab1" Header="{x:Static Resources:Strings.Caption_Tab_1}">
<Fluent:RibbonGroupBox x:Name="Verfahren" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=Verfahren}">
<Fluent:DropDownButton Style="{DynamicResource FluentDropDownButton}" DataContext="{Binding Path=DataContext.Vorgang, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}">
<Fluent:MenuItem Style="{DynamicResource FluentMenueItem}" DataContext="{Binding Path=DataContext.OpenVorgang, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
<Fluent:MenuItem Style="{DynamicResource FluentMenueItem}" DataContext="{Binding Path=DataContext.NewVorgang, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
<Fluent:MenuItem Style="{DynamicResource FluentMenueItem}" DataContext="{Binding Path=DataContext.SearchVorgang, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
</Fluent:DropDownButton>
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.AzInfo, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Vermerk, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Media, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Gis, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
</Fluent:RibbonGroupBox>
<Fluent:RibbonGroupBox x:Name="User" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=User}">
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Wv, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.AllgWv, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.History, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.LastSearch, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Logoff, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
</Fluent:RibbonGroupBox>
<Fluent:RibbonGroupBox x:Name="Inet" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=Inet}">
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Mail, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.OnlineInbox, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.OnlineUser, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Eingangsbuch, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
</Fluent:RibbonGroupBox>
<Fluent:RibbonGroupBox x:Name="Tools" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=Tools}">
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Info, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Calculator, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Appointment, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Contact, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
</Fluent:RibbonGroupBox>
</Fluent:RibbonTabItem>

<Fluent:RibbonTabItem x:Name="Tab3" Header="{x:Static Resources:Strings.Caption_Tab_3}">
<Fluent:RibbonGroupBox x:Name="Tools3" Style="{DynamicResource FluentRibbonGroupBox}" DataContext="{Binding Path=Tools}">
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Info, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" />
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Calculator, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small"/>
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Appointment, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small"/>
<Fluent:Button Style="{DynamicResource FluentButton}" DataContext="{Binding Path=DataContext.Contact, RelativeSource={RelativeSource AncestorType={x:Type Views:ProsozBauRibbonView}}}" Size="Small" />
</Fluent:RibbonGroupBox>
</Fluent:RibbonTabItem>
</Fluent:Ribbon>

hope it helps

Oliver