2015-12-28 3 views
2

Я создаю пользовательское окно WPF, используя WindowChrome. У меня есть свой собственный стиль, но строка заголовка представляет проблему. Если я установил Background из моего основного Grid в шаблоне на Прозрачный, тогда во всем окне будут использоваться системные цвета акцента, а кнопки Maximize/Minimize/Close видны.WPF WindowChrome с фоном - кнопки системы скрыты

Когда я устанавливаю любые другие фоновые кнопки Maximize/Minimize/Close, обложки. Я думал, что просто сделаю свое, но эти кнопки все еще доступны для кликов.

Есть ли способ показать их или полностью отключить?

Я могу установить CaptionHeight в 0 и создать собственную собственную строку заголовка, но я не хочу переопределять перетаскивание и другие функции по умолчанию.

Мой стиль ниже:

<Window.Style> 
     <Style TargetType="{x:Type Window}"> 
      <Setter Property="shell:WindowChrome.WindowChrome"> 
       <Setter.Value> 
        <shell:WindowChrome GlassFrameThickness="-1" 
          ResizeBorderThickness="4" 
          CaptionHeight="36"/> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type local:ConfigurationWindow}" > 
         <Grid> 
          <Rectangle Fill="Blue" VerticalAlignment="Top" Width="{TemplateBinding Width}" 
             Height="35" ></Rectangle> 
          <!-- This is the ContentPresenter that displays the window content. --> 
          <Border Margin="0,40,0,5" > 
           <ContentPresenter Content="{TemplateBinding Content}"/> 
          </Border> 
          <!--This is the transparent white rectangle that goes behind the window content.--> 
          <Border Margin="1,40,1,5" BorderBrush="Gray" BorderThickness="0,1,0,1" 
        Grid.ZIndex="-1"> 
           <Rectangle Fill="White" Opacity="0.5" /> 
          </Border> 

          <!-- Window Title --> 
          <TextBlock VerticalAlignment="Top" TextAlignment="Center" 
         Padding="0,3,0,8" 
         Text="{Binding RelativeSource= 
            {RelativeSource TemplatedParent}, Path=Title}" /> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Window.Style> 
+1

Почему вы не устанавливаете GlassFrameThickness = "0"? Это одна из общих настроек, чтобы скрыть кнопки по умолчанию. – emoacht

+0

Спасибо, что решил проблему. Не знаю, как мне это удалось: / – Filip

ответ

3

Как @emoacht заметил, видя GlassFrameThickness нулю удаляет невидимые кнопки закрытия/макс/мин. Вы все равно можете перетащить окно по области заголовка.

Установка GlassFrameThickness предназначена, чтобы сделать все окно стекловидный в том, что Aero путь от Windows 7.

Кроме того, вам не нужно использовать Microsoft.Windows.Shell NuGet package больше. Класс, в котором вы находитесь, находится в рамке сейчас, как System.Windows.Shell.WindowChromePresentationFramework.dll).

 Смежные вопросы

  • Нет связанных вопросов^_^