Что такое WPF-аналогия для блока CSS em?WPF analogy для 'em' unit
ответ
AFAIK, сейчас нет ни одного права. Но вы можете сделать свое желание для этого известного here.
Одна из альтернатив (и я не знаю, возможно ли это)) будет измерять, насколько большой желаемый шрифт, а затем принять это как ваш блок «ems», а затем масштабировать, используя эти «единицы».
<ScaleTransform ScaleX="1.2" ScaleY="1.2"></ScaleTransform>
представляется более или менее альтернативой 1.2em.
К сожалению, в WPF этого модуля нет эквивалента. Все ваши размеры шрифта и т. Д. Всегда устанавливаются в пикселях.
размер ет ширина прописной буквы M текущего шрифта, нет шрифта в зависимости от способа проклейки в Wpf
Btv, WPF использует так называемые «независимые устройства пикселей», которые всегда 1/96 из дюйм (потому что это один пикселей на современных мониторах) так:
- 1 пиксель 1/96 дюйма
- 96 пикселов в дюйм
- 1.33333 пикселей является точкой
- 3,779 р ixels - это mm
Это очень неточно на мониторах, потому что почти все мониторы сообщают о разрешении 96DPI и игнорируют реальный размер пикселя, но очень полезны при печати.
Вот что я сделал. Создал MarkupExtension, который преобразует размер шрифта в EM на основе шрифта, назначенного на Window.
Я хотел бы поблагодарить http://10rem.net/blog/2011/03/09/creating-a-custom-markup-extension-in-wpf-and-soon-silverlight
и
http://tomlev2.wordpress.com/tag/markup-extension/
для обеспечения необходимых знаний.
[MarkupExtensionReturnType(typeof(double))]
public class EmFontSize : MarkupExtension
{
public EmFontSize() { }
public EmFontSize(double size)
{
Size = size;
}
[ConstructorArgument("size")]
public double Size { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (serviceProvider == null)
return null;
// get the target of the extension from the IServiceProvider interface
IProvideValueTarget ipvt = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));
if (ipvt.TargetObject.GetType().FullName == "System.Windows.SharedDp")
return this;
DependencyObject targetObject = ipvt.TargetObject as DependencyObject;
var window = TryFindParent<Window>(targetObject);
if (window != null)
{
return window.FontSize * Size;
}
return 12 * Size;
}
public static T TryFindParent<T>(DependencyObject child) where T : DependencyObject
{
//get parent item
DependencyObject parentObject = GetParentObject(child);
//we've reached the end of the tree
if (parentObject == null) return null;
//check if the parent matches the type we're looking for
T parent = parentObject as T;
if (parent != null)
{
return parent;
}
else
{
//use recursion to proceed with next level
return TryFindParent<T>(parentObject);
}
}
public static DependencyObject GetParentObject(DependencyObject child)
{
if (child == null) return null;
//handle content elements separately
ContentElement contentElement = child as ContentElement;
if (contentElement != null)
{
DependencyObject parent = ContentOperations.GetParent(contentElement);
if (parent != null) return parent;
FrameworkContentElement fce = contentElement as FrameworkContentElement;
return fce != null ? fce.Parent : null;
}
//also try searching for parent in framework elements (such as DockPanel, etc)
FrameworkElement frameworkElement = child as FrameworkElement;
if (frameworkElement != null)
{
DependencyObject parent = frameworkElement.Parent;
if (parent != null) return parent;
}
//if it's not a ContentElement/FrameworkElement, rely on VisualTreeHelper
return VisualTreeHelper.GetParent(child);
}
}
Пример использования
xmlns:my="clr-namespace:FontSizeExample"
<TextBlock Text="Sample Font" FontSize="{my:EmFontSize 1.1}"/>
<TextBlock Text="Sample Font" FontSize="{my:EmFontSize .9}"/>
- 1. CSS Breakpoints и em unit
- 2. SQLServer Transaction Isolation Analogy
- 3. упростить формулу для EM
- 4. Использование em для заголовков
- 5. web/android analogy: декларативный и программный макет
- 6. unit test a приложенное поведение wpf
- 7. Волокно внутри EM: Соединение (em-synchrony)
- 8. Конвертировать из пикселей в em
- 9. Javascript Unit Box unit
- 10. Test Unit для ScheduledThreadPoolExecutor
- 11. unit testing для node.js
- 12. Unit Testing и FOSUserBundle
- 13. Являются ли CSS @media заявления запроса каскадными свойствами, указанными в em unit?
- 14. Error Unit test symfony
- 15. kafka unit unit test (java)
- 16. Microsoft Aparment Analogy (STA, MTA): Нужна помощь в понимании этого
- 17. Сплит-значения, такие как «20px», «100%», «4.58 em», «-40px», «.40em», «-80», «.04» в пары value/unit
- 18. CSS Использование em unit. Половина размера изображения в родительском элементе div
- 19. Использование em вместо pt
- 20. Базовые контроллеры Unit Testing
- 21. Rem/Em Confusion
- 22. Ответственные размеры с em
- 23. Несогласованный запас с em
- 24. Почему em переопределяет p для семейства шрифтов?
- 25. Расчет информационный критерий для алгоритма EM
- 26. использование - (значение) em для межстрочного интервала
- 27. em vs px ... для мобильных браузеров
- 28. EM-алгоритм для двух наборов скрытых переменных
- 29. EM кластеризация пакет для R версии 3
- 30. EM или проценты для адаптивного веб-сайта?