WPF Stop Clipping My Image - Окно (область заголовка)

Я хочу добавить заголовок в свое окно с помощью WPF, где значок моего заголовка, кажется, висит за пределами области заголовка (так что нижняя часть находится в области деталей). Что-то вроде следующего:

В настоящее время у меня есть реализация с использованием панели Dock Panel и Grid Panels. Это выглядит следующим образом.

Однако, если я изменил размер изображения с помощью конструктора VS2013, изображение будет обрезано в нижней части панели док-станции. Я пробовал ZIndex и т.д., Чтобы обойти это безрезультатно, но я все еще учился.

Вот мой XAML:

<window x:class="Boom.AndezViews.TestWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" title="Test Window">
 <dockpanel>
 <grid dockpanel.dock="Top" background="CadetBlue" verticalalignment="Top">
 <grid x:name="TitleHeaderGrid" margin="10 10 0 0" cliptobounds="False">
 <grid.columndefinitions>
 <columndefinition>
 <columndefinition>
 </columndefinition></columndefinition></grid.columndefinitions>
 <grid x:name="TitleHeaderTextGrid" grid.column="0">
 <grid.rowdefinitions>
 <rowdefinition>
 <rowdefinition>
 </rowdefinition></rowdefinition></grid.rowdefinitions>
 <textblock grid.row="0" textwrapping="Wrap" text="Window Title" fontsize="24" margin="0 0 10 0">
 <textblock grid.row="1" margin="10 3 0 0" textwrapping="Wrap" text="Lorem ipsum dolor sit amet, tation torquatos in pro, in nec commune placerat. At volumus legendos eleifend his, at quod noster ocurreret mea, unum admodum mandamus ad sea. Quod vivendum definiebas his ad." fontsize="12">
 </textblock></textblock></grid>
 <border grid.column="1" background="Transparent" margin="0 0 0 0">
 

 
 </border>
 </grid>
 </grid>

 <grid dockpanel.dock="Bottom">
 <button>
 <textblock>Close Me</textblock>
 </button>
 </grid>

 <grid background="ForestGreen">
 <grid margin="20 10 0 0">
 <textblock>Enter some details:</textblock>
 <scrollviewer margin="0 20 10 10">
 
 </scrollviewer>
 </grid>
 </grid>
 </dockpanel>
</window>

Это похоже на следующий дизайн:

Как я уже сказал, я все еще изучаю WPF, поэтому буду признателен за вклад в общую прокладку окна. Я использую панель Dock Panel, поскольку я думал, что это лучший способ сделать заголовок в верхней внутренней части окна - это лучший способ в WPF?

Кроме того, я хочу получить ответ на мой главный вопрос, каким образом я могу получить окно, которое будет отображаться как на первом снимке экрана. Почему происходит обрезка (если это правильный термин WPF) и как я могу получить значок из панели панели заголовков?

2 ответа

Понимаю. Пожалуйста, попробуйте этот код, удовлетворяет ли он вашим потребностям:

<window x:class="Test1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" title="MainWindow">
<grid x:name="TitleHeaderGrid" margin="10 10 0 0" cliptobounds="False">
 <grid.columndefinitions>
 <columndefinition>
 <columndefinition>
 </columndefinition></columndefinition></grid.columndefinitions>
 <grid.rowdefinitions>
 <rowdefinition>
 <rowdefinition>
 <rowdefinition>
 <rowdefinition>
 </rowdefinition></rowdefinition></rowdefinition></rowdefinition></grid.rowdefinitions>
 <border background="#FF24C5C5" grid.columnspan="2">
 <textblock textwrapping="Wrap" text="Window Title" fontsize="24" margin="0 0 10 0">
 <textblock margin="10 40 0 0" textwrapping="Wrap" text="Lorem ipsum dolor sit amet, tation torquatos in pro, in nec commune placerat. At volumus legendos eleifend his, at quod noster ocurreret mea, unum admodum mandamus ad sea. Quod vivendum definiebas his ad." fontsize="12">

 

 <grid margin="20 0 0 0" grid.columnspan="2" grid.row="2">
 <textblock>Enter some details:</textblock>
 <scrollviewer margin="0 20 10 10">
 
 </scrollviewer>
 </grid>

 <rectangle grid.column="1" grid.rowspan="2" grid.row="0" fill="#FFFF0000" verticalalignment="Top">

 </rectangle></textblock></textblock></border></grid></window><button grid.row="3" grid.columnspan="2" content="Close Me">


  <p> Для целей тестирования я просто заменил ваше изображение красным прямоугольником.</p> </button>


Ваше изображение обрезается в пределах первой строки. Вы пытались добавить Grid.RowSpan="2" к границе, содержащей ваше изображение?

licensed under cc by-sa 3.0 with attribution.