2014-02-26 47 views
3

我有以下我的App.xaml StyleWPF風格的行爲出現異常

<Style x:Key="BrowseBtn" TargetType="Button"> 
    <Setter Property="Content"> 
     <Setter.Value> 
       <Image Source="pack://application:,,,/Resources/BrowseIcon.png" /> 
     </Setter.Value> 
    </Setter> 
</Style> 

我用這種風格在Window這樣的:

<Button x:Name="btnBrowseCampaigns" Grid.Row="0" Style="{StaticResource BrowseBtn}" /> 
<Button x:Name="btnBrowseDatabase" Grid.Row="1" Style="{StaticResource BrowseBtn}" /> 

正如你所看到的,沒有明顯兩個按鈕之間的區別,但在設計器(和運行時)中,只有其中一個按鈕顯示該圖標。這是一個錯誤還是什麼?

回答

1

嘗試樣式設置x:Shared="False"這樣的:

<Window.Resources> 
    <Style x:Key="BrowseBtn" 
      x:Shared="True" 
      TargetType="{x:Type Button}"> 

     <Setter Property="Content"> 
      <Setter.Value> 
       <Image Source="pack://application:,,,/BrowseIcon.jpg" /> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 

x:Shared="True"默認那麼一個樣式是相同的 - 在這種情況下,系統上的重複Content發誓。 x:Shared="False"何時爲每個元素創建樣式時,只要其請求。從MSDN報價:

當設置爲,修改WPF資源檢索行爲,以便爲歸因資源請求爲每個請求,而不是共享同一個實例的所有請求創建一個new instance

欲瞭解更多信息,請訪問:

MSDN: x:Shared Attribute

+0

'X:Shared'不是由我VS.認可 – dotNET

+0

另外,爲什麼要這樣的風格不被共享? – dotNET

+0

@dotNET:奇怪,出錯了? VS什麼版本?在我看來,他沒有出現,所以有必要寫'Style'。 –