程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 《Programming WPF》翻譯 第5章 4.元素類型樣式

《Programming WPF》翻譯 第5章 4.元素類型樣式

編輯:關於.NET

命名樣式非常有用,當你得到一組屬性並應用到特點的元素上。然而,如果 你想要應用一個統一的樣式到所有確定元素類型的實例,設置TargetType而不用 一個Key,如示例5-16所示。

示例5-16

<!-- no Key -->
<Style TargetType="{x:Type Button}">
  <Setter Property="FontSize" Value="32" />
  <Setter Property="FontWeight" Value="Bold" />
</Style>
<!-- no Key -->
<Style TargetType="{x:Type TextBlock}">
  <Setter Property="FontSize" Value="32" />
  <Setter Property="FontWeight" Value="Thin" />
  <Setter Property="Foreground" Value="White" />
  <Setter Property="HorizontalAlignment" Value="Center" />
</Style>

<Button Grid.Row="0" Grid.Column="0" x:ID="cell00" />

<TextBlock Grid.Row="5" Grid.ColumnSpan="5" x:ID="statusTextBlock" />

在示例5-16所示,我們已經得到了兩種樣式,一種是帶有TargetType的 Button,沒有key;另一種是帶有TargetType的TextBlock,沒有key。它們都以 同樣的方式工作;當創建一個Button或TextBlock的實例而不用現實地設置Style 屬性,它使用的樣式將目標類型匹配到控件的類型。我們的元素類型樣式返回了 我們的游戲如圖5-4所示。

元素類型樣式是便利的,無論何時你想要所有特定元素的實例共享一個外觀 ,依賴於范圍。例如,迄今,在頂級窗體中,我們已經在示例中為樣式設置了范 圍,如示例5-17。

示例5-17

<!-- Window1.xaml -->
<Window >
  <!-- every Button or TextBlock in the Window is affected -- >
  <Window.Resources>
    <Style TargetType="{x:Type Button}"></Style>
    <Style TargetType="{x:Type TextBlock}"></Style>
  </Window.Resources>

</Window>

盡管如此,我們可能想縮小元素類型樣式的范圍。在我們的示例中,這將工 作良好將樣式限定范圍在grid中,從而只有grid中的Button和TextBlock受到影 響,如示例5-18。

示例5-18

<!-- Window1.xaml -->
<Window >
  <Grid >
    <!-- only Buttons or TextBlocks in the Grid are affected -- >
    <Grid.Resources>
      <Style TargetType="{x:Type Button}"></Style>
      <Style TargetType="{x:Type TextBlock}"></Style>
    </Grid.Resources>

  </Grid>
  <!-- Buttons and TextBlocks outside the Grid are unaffected -- >

</Window>

或者,如果你想使你的樣式在你的工程中有更大的作用區域,你可以將它們 放在應用程序范圍內,如示例5-19。

示例5-19

<!-- MyApp.xaml -->
<Application >
  <!-- every Button or TextBlock in the Application is affected - ->
  <Application.Resources>
    <Style TargetType="{x:Type Button}"></Style>
    <Style TargetType="{x:Type TextBlock}"></Style>
  </Application.Resources>
</Application>

一般而言,理解元素類型的樣式范圍規則是有用的,因此你可以判斷它們在 各種WPF對象模型中的效果。第6章更加詳細地討論了所有種類的資源范圍,包括 樣式。

命名樣式和元素類型樣式

當對命名樣式還是元素類型樣式使用作出選擇時,我們的一位評論家說,按 照他的經驗,一旦你有10個以上給予元素類型的樣式,對一個特定的控件獲取它 的樣式保持跟蹤將非常困難。這是一個原因是我成為命名樣式的粉絲。

對於我而言,樣式是一個在一個地方應用到內容的語義標簽,並且在另一個 地方也能獲得一個可視化表示。正如我們的TTT示例那樣簡單,我們已經得到了 兩個樣式,一個是為了狀態文字,另一個是為了移動的單元;在我們這麼做之前 ,我們將要得到更多。主要的區別因素是我們在這些元素中顯示的數據種類,而 不是保持數據的元素類型。實際上,我們有一些分配到TextBox控件的樣式,這 將無論如何打消基於類型的樣式,甚至是這個簡單的應用程序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved