2012-06-11 69 views
6

我在理解Windows 8 metro應用程序中的一種樣式定義時遇到了問題。「ListViewItemPlaceholderBackgroundThemeBrush」位於何處?

當您使用VS Metro風格的應用程序,還有一個名爲

常見

創建

文件夾。此文件夾中有一個名爲

StandardStyles.xaml

現在下面的代碼片段是該文件的文件:

<!-- Grid-appropriate 250 pixel square item template as seen in the GroupedItemsPage and ItemsPage --> 
<DataTemplate x:Key="Standard250x250ItemTemplate"> 
    <Grid HorizontalAlignment="Left" Width="250" Height="250"> 
     <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}"> 
      <Image Source="{Binding Image}" Stretch="UniformToFill"/> 
     </Border> 
     <StackPanel VerticalAlignment="Bottom" Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}"> 
      <TextBlock Text="{Binding Title}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextStyle}" Height="60" Margin="15,0,15,0"/> 
      <TextBlock Text="{Binding Subtitle}" Foreground="{StaticResource ListViewItemOverlaySecondaryForegroundThemeBrush}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Margin="15,0,15,10"/> 
     </StackPanel> 
    </Grid> 
</DataTemplate> 

我不明白這裏是靜態的資源定義,例如邊框

Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}" 

這不是關於您如何使用模板和綁定以及資源。

這是哪裏ListViewItemPlaceholderBackgroundThemeBrush位於何處?

非常感謝您的幫助。

低糜

回答

5

這是那些令人難以置信的令人沮喪的事情,應該是微軟的文檔中的一個,但不是(還)。

ListViewItemPlaceholderBackgroundThemeBrush是System Brush Resources之一。它由Metro「Light」或「Dark」主題定義(無論您爲應用選擇哪個)。

您可以在Blend中看到系統畫筆的完整列表。 (不幸的是,我還沒有找到任何方法來枚舉它們,似乎沒有任何編程方式來檢查主題資源。)

下面是一些可以幫助您查看完整列表的步驟。 (當然,如果您已經熟悉Blend,則可以簡化步驟。)

  1. Open Expression Blend。
  2. 創建一個新項目,並選擇XAML(Windows Metro風格)>空白應用程序(XAML),然後單擊確定。
  3. 單擊設計圖面選擇網格。 (在左下方的「對象和時間線」停靠窗口中,「[Grid]」線將變爲高亮顯示。)
  4. 在右上角的「停靠屬性」窗口中找到「刷子」類別。
  5. 正下方說「背景:無刷」,有一排五個按鈕。點擊最右邊的按鈕(「刷資源」)。

系統畫筆資源列表將出現在列表框中。

enter image description here

7

在Windows 8客戶預覽你可以找到包含資源的定義(包括ListViewItemPlaceholderBackgroundThemeBrush)在文件:

C:\ Program Files文件(x86)的\的Windows套件\ 8.0 \包含\ winrt \ xaml \ design \ themeresources.xaml