我正在准备511认证,其中一个我不明白的问题就是这个:
You are developing a Windows Presentation Foundation (WPF) application.
Border 对象使用两种样式,蓝色和绿色。两种样式具有相同的值 CornerRadiusand BrushThicknessproperties 以及 Backgroundproperty 的不同值。
您需要以蓝色或绿色样式定义 CornerRadius和BrushThicknesssettings ,但不能同时定义两者。 你应该怎么做?
A)将蓝色和绿色分成两个文件。将基本设置放在蓝色中并使用MergedDictionaries。确保蓝色文件在列表中排在第二位。
B)将蓝色和绿色放入同一个文件中。将基本设置设置为蓝色,并将蓝色标记为基于绿色。
C)将蓝色和绿色放入同一个文件中。将基本设置设置为蓝色,并将绿色标记为“基于蓝色”。
D)将蓝色和绿色分成两个文件。将基本设置设置为蓝色并使用MergedDictionaries。确保绿色文件在列表中排在第二位。
正确的答案是B
任何人都可以向我解释为什么它是B而不是C
答案 0 :(得分: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
样式不从BorderThickness
样式继承CornerRadius
和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
样式继承了BorderThickness
样式的CornerRadius
和Blue
属性。
我觉得很清楚 C 是正确的答案,而不是 B 。