2011-03-27 76 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

相關問題