Как изменить положение заголовка окна xaml

Можно ли изменить положение заголовка в окне? По умолчанию он помещается в левой части окна заголовка окна. Я хочу переместить его в центр.

2 ответа

WindowChrome также полезен.

http://blogs.msdn.com/b/wpfsdk/archive/2010/08/25/experiments-with-windowchrome.aspx содержит некоторую полезную информацию.

Например, вот пример MainWindow.xaml, который вы можете использовать в качестве отправной точки и уточнить далее.

<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.windowchrome>
 <window.template>
 <controltemplate>
 <grid>
 <grid.rowdefinitions>
 <rowdefinition height="30">
 <rowdefinition height="1*">
 </rowdefinition></rowdefinition></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*">
 </columndefinition></columndefinition></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 -->
 
 </button>
 <!-- Window Title - Center Aligned -->
 <textblock grid.column="1" textalignment="Center" verticalalignment="Center" text="{Binding Title, RelativeSource={RelativeSource TemplatedParent}}">
 </textblock></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}}">
 </contentpresenter></border>
 </grid>
 </controltemplate>
 </window.template>
 <grid>
 <textbox>
 </textbox></grid>
</window>

Вы увидите окно, которое выглядит так:


Я предполагаю, что ваш вопрос касается WPF. (поскольку это невозможно в winrt)

В основном вам нужно установить WindowStyle в None и создать собственное окно.

Вы можете найти много информации и примеров по ссылкам:

В пользовательском окне вы можете разместить заголовок везде, где хотите.

licensed under cc by-sa 3.0 with attribution.