2010-09-23 36 views
2

資源我在ResourceDictionary中定義一個Silverlight 4.0應用程序Silverlight中找不到相同的字典

<Style x:Key="GridSplitterStyle" TargetType="sdk:GridSplitter"> 
    <Setter Property="HorizontalAlignment" Value="Stretch" /> 
    <Setter Property="VerticalAlignment" Value="Stretch" /> 
    <Setter Property="Background" Value="Transparent" /> 
    <Setter Property="Template" Value="{StaticResource GridSplitterTemplate}" /> 
</Style> 

<ControlTemplate x:Key="GridSplitterTemplate" TargetType="sdk:GridSplitter"> 
    <StackPanel Background="Transparent" Height="32"> 
     <!-- ... --> 
    </StackPanel> 
</ControlTemplate> 

的。當我申請我的GridSplitter風格以下的風格,風格是發現和正確應用。然而,連接模板屬性在相同的字典文件中定義的控件模板時,下面的錯誤出現:

無法找到名稱資源/主要GridSplitterTemplate

爲什麼Silverlight可以找到風格但不是模板?它們位於同一文件中...

回答

3

靜態資源引用在Xaml解析期間被解析。因此你不能使用正向引用。

將控件模板以文檔順序放在樣式上方,以便解析器首先找到「GridSplitterTemplate」。然後,當「GridSplitterStyle」引用它時,解析器將能夠找到它。

+0

哇,我沒看見那個人來!我認爲這些事情自C++以來解決..謝謝堆。 – 2010-09-24 00:09:18

+1

@Xavier:我猜如果Xaml像其他語言一樣被解析和編譯,那麼將會使用一個允許使用前向引用的雙通系統。然而,Xaml解析是在運行時完成的,而不是編譯時間,所以更快的單通解析優先於前向引用的方便性。 – AnthonyWJones 2010-09-24 06:16:03

+0

這是一個救生員。我也不會想到這一點! – fortpointuiguy 2011-03-28 21:54:07