0

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

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

两种样式,Bluegreen,用于Border对象。这两种样式的 CornerRadius 和 BrushThickness 属性值相同,而 Background 属性不同

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

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

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

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

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

正确答案是B

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

4

1 回答 1

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样式不会从样式继承BorderThicknessCornerRadius属性Blue

答案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样式继承了样式的BorderThicknessCornerRadius属性Blue

对我来说似乎很清楚C是正确答案,而不是B

于 2015-03-05T10:51:29.620 回答