2016-12-26 5 views
0

У меня проблемы со стилями для моего приложения WPF. Некоторые пользователи применяют тему классических вдов и ActualHeight текстового блока с такими же свойствами (размер шрифта, маржа, отступы) различаются в зависимости от того, какой из них используется.
Например, Высота TextBlock с FontSize = 15 с использованием темы aero составляет 20, а в классическом - 18.Размер элементов управления WPF в классической теме Windows и Aero

Как я мог избежать такого поведения?

ответ

2

Стандартные стили для встроенных элементов управления выглядят по-разному в зависимости от используемой темы Windows.

Если вы хотите, чтобы избежать этого вы можете заставить приложение всегда использовать определенную тему, добавив словарь ресурсов в соответствующей теме на ваш App.xaml файл:

<Application x:Class="WpfApplication1.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:local="clr-namespace:WpfApplication1" 
      StartupUri="MainWindow.xaml" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      d1p1:Ignorable="d" xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35, 
ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

Не забудьте добавить ссылку к соответствующей сборке (Project-> Add Reference-> Assemblies-> Framework в Visual Studio), например PresentationFramework.Aero.dll, если вы решите использовать тему Aero.

Windows 7 theme for WPF?

Как реально изменить систему Тема в WPF:http://northhorizon.net/2010/how-to-actually-change-the-system-theme-in-wpf/