首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF如何设置pt(12 pt等)通过DynamicResource实现FontSize属性

WPF如何设置pt(12 pt等)通过DynamicResource实现FontSize属性
EN

Stack Overflow用户
提问于 2013-05-27 13:16:51
回答 1查看 4.5K关注 0票数 2

我可以用:

代码语言:javascript
复制
<TextBlock Text="Some Textes" FontSize="12pt" />

正常工作。但是我想使用DynamicResource扩展,有可能吗?

这样做是行不通的:

代码语言:javascript
复制
<TextBlock Text="Some Textes" FontSize="{DynamicResource SomeResources}" /> 

SomeResources:

代码语言:javascript
复制
<System:Stringx:Key="SomeResources">12pt</System:String>

我不想使用AttachedBehavior。我知道,我可以用它来解决我的问题(使用FontSizeConverter)。

EN

回答 1

Stack Overflow用户

发布于 2013-05-27 13:42:37

更新:

我看你修改了你的问题,去掉了绑定选项。如果您只想从xaml资源中获取这些信息,则需要使用MarkupExtension。您可以找到MarkupExtension和用法这里。这对你的案子没什么用。

答复:

FontSizeSystem:Double 文档型。

接下来,默认的Binding用于FontSize假设像素与设备无关,但是由于您需要pt的像素,所以我们可以使用如下转换器:

代码语言:javascript
复制
using System.Globalization;
using System.Windows;
using System.Windows.Data;

class ConvertFromPoint : IValueConverter
{
  public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
    var convertFrom = new FontSizeConverter().ConvertFrom(value.ToString());
    if (convertFrom != null)
      return (double) convertFrom;
    return 1;
  }

  public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
    throw new NotImplementedException();
  }
}

和用法:

代码语言:javascript
复制
<TextBlock FontSize="{Binding StringProperty, Converter={StaticResource ConvertFromPointConverter}}">Some Text</TextBlock>

备用:

如果不想使用转换器和FontSizeConverter,只需在属性getter中进行计算。

类似于:

代码语言:javascript
复制
private double _someFontval;
public double SomeFontVal {
  get {
    return _someFontval * 96 / 72;
  }

  set {
    _someFontval = value;
  }
}

用法:

代码语言:javascript
复制
//.cs
SomeFontVal = 12.0;

//.xaml
<TextBlock FontSize="{Binding SomeFontVal}">Some Text</TextBlock>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16774122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档