- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的通用 Windows 平台应用程序中,我有一个 TextBlock
,其 DataContext
是一个自定义类:
<TextBlock Text="{Binding OpeningHourDescription}" FontWeight="Light">
...
</TextBlock>
我的自定义类有一个属性 IsOpen
。如果为真,则 TextBlock
应更改其颜色和字体粗细。我试图通过替换 TextBlock
元素中的以下 XAML 代码来定义它:
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{Binding IsOpen}" Value="true">
<Core:ChangePropertyAction PropertyName="Foreground" >
<Core:ChangePropertyAction.Value>
<Color>Lime</Color>
</Core:ChangePropertyAction.Value>
</Core:ChangePropertyAction>
<Core:ChangePropertyAction PropertyName="FontWeight">
<Core:ChangePropertyAction.Value>
<FontWeight>ExtraBold</FontWeight>
</Core:ChangePropertyAction.Value>
</Core:ChangePropertyAction>
</Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
行为本身有效:如果 IsOpen
为真,则文本为绿色。但是,未设置 FontWeight
,文本从不显示为粗体。
奇怪的是,交换两个 ChangePropertyAction
会导致两个操作均未应用。
在 TextBlock
上静态更改 FontWeight
会按预期工作。当FontWeight="Light"
未在 TextBlock
上设置时,也会出现此问题。
我做错了什么?如何使用 ChangePropertyAction
修改 FontWeight
?
最佳答案
如果查看 Windows API,您会发现 TextBlock.FontWeight 属性属于 FontWeight
类型,这是一个包含 Int16 的结构。
public struct FontWeight
{
public System.UInt16 Weight;
}
如果您在控件上设置 XAML 属性,它会设法将字符串转换为 FontWeights
静态属性。
public sealed class FontWeights : IFontWeights
{
public static FontWeight Black { get; }
public static FontWeight Bold { get; }
public static FontWeight ExtraBlack { get; }
public static FontWeight ExtraBold { get; }
public static FontWeight ExtraLight { get; }
public static FontWeight Light { get; }
public static FontWeight Medium { get; }
public static FontWeight Normal { get; }
public static FontWeight SemiBold { get; }
public static FontWeight SemiLight { get; }
public static FontWeight Thin { get; }
}
但是在触发器中你声明你输入的字符串实际上是一个 FontWeight
结构(而不是 FontWeights
属性),因此系统有一个尝试转换字符串时出错。
<Core:ChangePropertyAction.Value>
<FontWeight>ExtraBold</FontWeight>
</Core:ChangePropertyAction.Value>
解决方案:您可以使用 GoToStateAction
和 VisualStates 来解决您的问题。
<TextBlock x:Name="MyTextBlock" Text="{Binding OpeningHourDescription}" FontWeight="Light">
<interactivity:Interaction.Behaviors>
<core:DataTriggerBehavior Binding="{Binding IsOpen}" Value="true">
<core:GoToStateAction StateName="Open" >
</core:GoToStateAction>
</core:DataTriggerBehavior>
</interactivity:Interaction.Behaviors>
</TextBlock>
并将正确的状态添加到您的容器控件中。
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStateGroup">
<VisualState x:Name="Open">
<VisualState.Setters>
<Setter Target="MyTextBlock.Foreground" Value="Lime" />
<Setter Target="MyTextBlock.FontWeight" Value="Bold" />
</VisualState.Setters>
</VisualState>
...
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
关于c# - ChangePropertyAction 不影响 FontWeight,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33829335/
我正在编写一个简单的测验应用程序。它工作正常,直到我尝试编辑所选单选按钮的字体var labelStyle = userpick.style.fontWeight; 有人能发现问题吗? 此外,如果可能
我尝试设置 Button 的 fontWeight,但字体粗细仍然相同。 我的按钮 我该如何解决这个问题? 最佳答案 要设置FontWeight,您必须实际设置 FontWeight。 请参阅下面我
在我的通用 Windows 平台应用程序中,我有一个 TextBlock,其 DataContext 是一个自定义类: ... 我的自定义类有一个属性 IsOpen。如果为真,则 Text
我正在尝试通过按下按钮将文本区域内的文本切换为粗体或非粗体。我有以下代码: function bold() { var ta = document.getElementById("textAr
我试图为用户提供对文本显示的一些控制。我使用 document.getElementsByClassName 来定位父选择器内的所有选择器(具有类 basic-text-frame)。除了 myfun
当在我的数据网格中选择一行并按下一个按钮时,我想将该行中单元格的 FontWeight 更改为粗体。 我一直在寻找一种方法来做到这一点,但我所能做的就是改变每一列的样式,我找不到一种方法来获取选定的行
安装 Visual Studio 2012 并打开 Silverlight 5 项目后,我遇到了与 TypeConverter 相关的各种设计时错误,例如: The TypeConverter for
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭
如何在不为每个粗细指定新系列的情况下选择不同的字体粗细? fonts: - family: Montserrat fonts: - asset: assets/fonts/Mon
我一直在设置一个资源字典来为我的 WPF 应用程序中的所有控件设置样式,并且在设置标签的字体粗细时我发现了一些奇怪的行为。 我必须为标签设置样式,第一个使用正常字体粗细: 第二
我设法按照 official documentation 在我的 react-native expo 应用程序上加载自定义字体: const App = () => { let [fontsLoa
在 Flutter 中设置字体粗细时,我通常使用预设值,例如 FontWeight.normal 或 FontWeight.w500。在我目前的情况下,我需要设置自定义 FontWeight。如何将字
image pubspec 我要设置Noir Pro作为我的 flutter 应用程序的默认字体系列。 默认 Roboto fontFamily 更改为 NoirPro 但字体粗细 e.g(.w400
我正在尝试以下代码: fig, ax1 = plt.subplots() #data is a geopandas DataFrame data.plot(ax=ax1, kind='bar', co
我正在尝试以下代码: fig, ax1 = plt.subplots() #data is a geopandas DataFrame data.plot(ax=ax1, kind='bar', co
我必须在我的 CustomControl 中创建一个 FontWeight 属性,但它在控制 FontWeights 时出错。我该如何解决? 属性(property)登记: public static
我的 Flutter 应用程序中有一个图标(特定的后退图标)。它看起来更轻。由于某些原因,我想让它变得大胆/增加重量。 Container( child: Icon( Icon
我正在为我的 flutter 应用程序使用 google 图表库,并且我正在尝试自定义标签的样式。 但是如何更改 TextStyleSpec 的字体粗细?参数 fontWeight 要求提供 Stri
我正在尝试对 Animated.Text 的 fontWeight 进行动画处理,但无法使其正常工作。 1。插值 const titleFontWeight = this.positionTitle1
我正在尝试在 td 上实现此 css 规则 const boldText = { fontWeight: 'bold' } Content 但它抛出以下错误: [ts] Type '{ sty
我是一名优秀的程序员,十分优秀!