Mathemats
Mathemats

Reputation: 1185

Right align ToolBarPanel control WPF

This is my first time using WPF, I have a usercontrol with a ToolBar, and ToolBarPanels on that ToolBar. My problem is trying to right align the very last ToolBarPanel which contains some buttons.

https://i.sstatic.net/ZRox6.jpg

I have scoured the interwebs and tried solutions (wrap it in a grid, dockpanel, stackpanel) but none have worked.

My XAML is:

 <ToolBar 
        HorizontalAlignment="Left" Width="{Binding ActualWidth, ElementName=userControl}"
        VerticalAlignment="Top" 
        Name="ToolBarPanel1" 
        UseLayoutRounding="False"
        ToolBarTray.IsLocked="True">

        <ToolBar.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FF475B7E" Offset="1"/>
                <GradientStop Color="#FFB9C3D5" Offset="0.427"/>
            </LinearGradientBrush>
        </ToolBar.Background>

  .........

           <ToolBarPanel ToolBar.OverflowMode="AsNeeded" Orientation="Horizontal" HorizontalAlignment="Right" >

            <Button
                Name="btnPrint"
                Margin="5"
                HorizontalAlignment="Right"
                VerticalAlignment="Center"
                BorderThickness="1" 
                IsEnabled="{Binding Path=AllowEdit}" 
                BorderBrush="#FF586A8B" 
                DockPanel.Dock="Right"
                Visibility="{Binding Path=ControlVisibility.Print, 
                Converter={StaticResource BooleanToVisibilityConverter}}">
                <Image Source="/component/Images/print-image.png"></Image>
                <Button.ToolTip>
                    <ToolTip>
                        <TextBlock>Print Chart</TextBlock>
                    </ToolTip>
                </Button.ToolTip>
            </Button>

            <Button
                Name="btnCopy"                     
                Margin="5" 
                HorizontalAlignment="Right" 
                VerticalAlignment="Center" 
                BorderThickness="1" 
                IsEnabled="{Binding Path=AllowEdit}" 
                BorderBrush="#FF586A8B" 
                Visibility="{Binding Path=ControlVisibility.Copy, 
                Converter={StaticResource BooleanToVisibilityConverter}}">
                <Image Source="/component/Images/copy-image.png"></Image>
                <Button.ToolTip>
                    <ToolTip>
                        <TextBlock>Copy Chart to Clipboard</TextBlock>
                    </ToolTip>
                </Button.ToolTip>
            </Button>

            <Button
                Name="btnInfo" 
                Margin="5" 
                HorizontalAlignment="Right" 
                VerticalAlignment="Center" 
                BorderThickness="1" 
                IsEnabled="{Binding Path=AllowEdit}" 
                BorderBrush="#FF586A8B" 
                Visibility="{Binding Path=ControlVisibility.Info, 
                Converter={StaticResource BooleanToVisibilityConverter}}">
                <Image Source="/component/Images/help-image.png"></Image>
                <Button.ToolTip>
                    <ToolTip>
                        <TextBlock>Chart Help</TextBlock>
                    </ToolTip>
                </Button.ToolTip>
            </Button>

        </ToolBarPanel>

    </ToolBar>

Upvotes: 0

Views: 4402

Answers (1)

VidasV
VidasV

Reputation: 4895

Well stretched grid with last columndefinition set to "*" should fulfill your goal. Also you can try using DockPanel and aligning like this:

<DockPanel>

   <ToolBarPanel DockPanel.Dock="Left"/>
   <ToolBarPanel DockPanel.Dock="Left"/>
   <ToolBarPanel DockPanel.Dock="Left"/>
   <!-- Last One -->
   <ToolBarPanel DockPanel.Dock="Right"/>

</DockPanel>

Upvotes: 1

Related Questions