Is it possible to change the position of the title in the window? By default it is placed at the left side of the window title bar. I want to move it towards the center.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
WindowChrome is helpful as well.
http://blogs.msdn.com/b/wpfsdk/archive/2010/08/25/experiments-with-windowchrome.aspx has some useful information.
For e.g., here is a sample MainWindow.xaml that you can use as a starting point and refine 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's 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'll see a window that looks like this:
回答2:
I'm assuming your question is about WPF. (as this is not possible in winrt)
Basicly, you will have to set the WindowStyle
to None and create your own custom window.
You can find a lot of information and examples via the following links:
- https://msdn.microsoft.com/en-us/library/ms748948(v=vs.100).aspx
- http://www.codeproject.com/Articles/140267/Create-Custom-Windows-in-WPF-with-Ease
Within the custom window, you can position the title wherever you want.