2009-09-14 86 views
3

WPF中的StaticResources和DynamicResources有什麼區別?WPF中StaticResources和DynamicResources有什麼區別?

編輯: 這段代碼在XAML文件:

<ComboBox Canvas.Left="14" Style="{StaticResource ComboBoxStyle}" 
      Canvas.Top="137" Height="33" Name="cmbItem" Width="170" 
      SelectionChanged="cmbItem_SelectionChanged"> 
    <ComboBoxItem>Name</ComboBoxItem> 
    <ComboBoxItem>Age</ComboBoxItem> 
</ComboBox> 

下面的代碼是在資源字典文件,當您使用它們

<Style x:Key="ComboBoxStyle" TargetType="{x:Type ComboBox}"> 

    <Setter Property="FocusVisualStyle" Value="{StaticResource ComboBoxFocusVisual}"/> 

    <Setter Property="Foreground" Value="#FF436B13"/> 
</Style> 

回答

6

動態資源進行評估。靜態資源在加載時進行評估。

MSDN

當使用標記擴展,則 通常提供以字符串形式的一個或多個 參數是 由該特定標記 擴展處理,而不是在被評價 該屬性的背景是 集。靜態資源標記 分機通過在所有 可用資源字典中查找該密鑰的值 來處理密鑰。這個 發生在加載過程中,這是加載過程 需要分配屬性值 時需要靜態資源 引用的時間點 。所述DynamicResource標記 擴展代替處理由 創建表達的密鑰,並且直到 應用程序實際運行,在 該時間表達式求值 並提供一個值,該值 表達保持未計算的。

當你應該選擇哪個選項時,有更多的細節。

+0

我收到此錯誤 「無法找到名爲‘{ComboBoxFocusVisual}’資源引用它。資源名稱是區分大小寫的。錯誤‘cmbItem’在標記文件中「 請提出解決方案.. – 2009-09-14 09:19:09

+0

@Jaswant:請發佈XAML代碼 – 2009-09-14 09:22:25

+0

此代碼在XAML文件中 名稱 年齡 下面的代碼在資源字典文件中