2011-03-27 55 views
0
 <Style TargetType="DataGridCell"> 
      <Style.Setters> 
       <Setter Property="TextBlock.VerticalAlignment" Value="Center" /> 
       <Setter Property="TextBlock.FontSize" Value="30" /> 
       <Setter Property="Image.Width" Value="24" /> 
      </Style.Setters> 
     </Style> 

前2位引用程序按预期工作。最后一个设置器也将宽度应用于所有元素,图像和文本块。为什么?请解释一下,这种风格是如何工作的?

回答

4

这是因为Image.Width是指FrameworkElement.Width属性通过Image类。换句话说,您通过Image类来解决FrameworkElement.WidthProperty字段,该类从FrameworkElement继承。

如果您只想将宽度应用于图像,请使用TargetTypeImage的单独样式。

+0

我真的不明白。如何解决工作? – user626528 2011-03-27 09:36:00

+1

@ user626528 - WPF样式不像CSS。这意味着你不能使用Style设置子元素的属性。我怀疑在上面的样式中,你期望DataGridCell中的所有图像的宽度都设置为24.这不会发生。您只能使用上面的样式在DataGridCell上设置属性。 Image.Width和DataGridCell.Width属性实际上是相同的属性,这意味着以上将设置DataGridCell的宽度。 – CodeNaked 2011-03-27 21:44:11

+0

@CodeNaked,谢谢,清楚。但是,是否有任何其他方式来设置样式目标元素内指定的子元素类型的属性? – user626528 2011-03-28 02:57:51