How to change the position of the xaml window title

Can I change the position of the title in the window? By default, it is placed on the left side of the window title bar. I want to move it to the center.

enter image description here

0
source share
2 answers

WindowChrome is also useful.

http://blogs.msdn.com/b/wpfsdk/archive/2010/08/25/experiments-with-windowchrome.aspx contains some useful information.

For example, here is an example of MainWindow.xaml, which you can use as a starting point and clarify further.

<Window x:Class="WindowChromeTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WindowChromeTest" mc:Ignorable="d" x:Name="_MainWindow" Title="MainWindow" Height="350" Width="525"> <WindowChrome.WindowChrome> <WindowChrome GlassFrameThickness="-1" ResizeBorderThickness="4" CaptionHeight="40"/> </WindowChrome.WindowChrome> <Window.Template> <ControlTemplate> <Grid> <Grid.RowDefinitions> <RowDefinition Height="30"/> <RowDefinition Height="1*"/> </Grid.RowDefinitions> <!-- Opacity of < 1.0 helps show the minimize, maximize and close buttons --> <Border Grid.Row="0" Background="Wheat" Opacity="0.8"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="30" /> <ColumnDefinition Width="1*"/> </Grid.ColumnDefinitions> <!-- System Menu --> <Button Grid.Column="0" WindowChrome.IsHitTestVisibleInChrome="True" Command="{x:Static SystemCommands.ShowSystemMenuCommand}" CommandParameter="{Binding ElementName=_MainWindow}"> <!-- Make sure there is a resource with name Icon in MainWindow --> <Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Icon}" WindowChrome.IsHitTestVisibleInChrome="True"/> </Button> <!-- Window Title - Center Aligned --> <TextBlock Grid.Column="1" TextAlignment="Center" VerticalAlignment="Center" Text="{Binding Title, RelativeSource={RelativeSource TemplatedParent}}" /> </Grid> </Border> <!-- This is the Window main content area --> <!-- Top margin 44 = WindowChrome ResizeBorderThickness (4) + CaptionHeight(40) --> <!-- Bottom margin 1 is somewhat arbitrary --> <Border Grid.Row="1" Background="White" Opacity="0.5"> <ContentPresenter Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}"/> </Border> </Grid> </ControlTemplate> </Window.Template> <Grid> <TextBox/> </Grid> </Window> 

You will see a window that looks like this:

enter image description here

+2
source

I assume your question is about WPF. (since this is not possible in winrt)

Basically you need to set WindowStyle to None and create your own window.

You can find a lot of information and examples at the links:

In the custom window, you can place the title wherever you want.

+1
source

Source: https://habr.com/ru/post/1236561/


All Articles