【问题标题】:Use one style but not both together in WPF在 WPF 中使用一种样式但不能同时使用两种样式
【发布时间】:2015-03-05 10:37:23
【问题描述】:

我正在准备511认证,我不明白的问题之一是这个:

You are developing a Windows Presentation Foundation (WPF) application.

Border 对象使用了两种样式,Bluegreen。两种样式具有相同的值 CornerRadiusand BrushThicknesspropertiesBackgroundproperty 的不同值。

您需要以蓝色或绿色样式定义 CornerRadius 和 BrushThicknesssettings,但不能同时定义这两种样式。 你应该怎么做?

A) 将蓝色和绿色分成两个文件。将基本设置放入蓝色并使用 MergedDictionaries。确保蓝色文件在列表中排在第二位。

B) 将蓝色和绿色放入同一个文件中。将基本设置放入蓝色并将蓝色标记为基于绿色。

C) 将蓝色和绿色放入同一个文件中。将基本设置放入蓝色并将绿色标记为基于蓝色。

D) 将蓝色和绿色分成两个文件。将基本设置放入蓝色并使用 MergedDictionaries。确保绿色文件在列表中排在第二位。

正确答案是B

谁能解释一下为什么是B而不是C

【问题讨论】:

  • 我觉得不对。以绿色为基础,将属性放在蓝色中将使绿色没有属性。也就是说,我认为这是来自模拟考试?
  • C 是这个问题的正确答案,而不是 B。但是,这样做并不是最佳做法。
  • 如果这是实际考试中的问题,则您违反了开始考试时签署的协议。
  • 不是,这是模拟考试。
  • 在这种情况下要求退款

标签: c# wpf styles mergeddictionaries


【解决方案1】:

如果我们选择答案 B(蓝色是基础,并且基于绿色):

<Style x:Key="Green" TargetType="{x:Type Border}">
    <Setter Property="Background" Value="Green" />
</Style>

<Style x:Key="Blue" TargetType="{x:Type Border}" BasedOn="{StaticResource Green}">
    <Setter Property="CornerRadius" Value="5" />
    <Setter Property="BrushThickness" Value="1" />
    <Setter Property="Background" Value="Blue" />
</Style>

这里,Green 样式Blue 样式继承 BorderThicknessCornerRadius 属性。

回答C怎么样? (蓝色为基础,绿色以蓝色为基础):

<Style x:Key="Blue" TargetType="{x:Type Border}">
    <Setter Property="CornerRadius" Value="5" />
    <Setter Property="BrushThickness" Value="1" />
    <Setter Property="Background" Value="Blue" />
</Style>

<Style x:Key="Green" TargetType="{x:Type Border}" BasedOn="{StaticResource Blue}">
    <Setter Property="Background" Value="Green" />
</Style>

这里,Green 样式继承了 Blue 样式的 BorderThicknessCornerRadius 属性。

在我看来,C 是正确答案,而不是 B

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多