2012-08-22 42 views
0

我一直在試圖加載我的視圖模型中的資源字典XAML文件。我能夠實例化它,並且調用它不會導致立即錯誤,但是在控制權返回到UI之後,出現錯誤彈出窗口「錯誤HRESULT E_FAIL已從調用COM組件返回」。從ViewModel參考ResourceDictionary

我做了以下內容:

  • 資源字典文件位於MyApp/ViewModelsViewModelsResources.xaml其中MyApp是我的Silverlight應用程序的根文件夾
  • ViewModelsResources.xaml標記生成操作:Content,複製到輸出目錄:Copy always ,自定義工具:MSBuild:Compile
  • ResourceDictionary對象被實例化(並且此代碼位於與資源di相同的文件夾中的類中ctionary文件)
    ResourceDictionary VMResources = new ResourceDictionary() 
    { 
        Source = new Uri("/ViewModels/ViewModelsResources.xaml", UriKind.Relative) 
    };
  • 該目的是基於x通過索引然後引用:密鑰值:Template1 = VMResources["myTemplate"] as ControlTemplate;(同一類如上述示例代碼)

調試表明VMResourcesTemplate1被轉讓良好的值。我不知道爲什麼這會拋出有關COM組件的錯誤,但是我在此ResourceDictionary被引用時隔離了它。如果我拿出引用VMResources[x]的行,則沒有錯誤。任何幫助將非常感激。

回答

0

原來,這樣做的確如我所述的那樣工作,但您不能在資源字典中找到的模板中指定事件。我應該意識到這會造成問題,但COM卻拋棄了我。爲了解決事件處理程序的需要,我使用了Behaviors。 Behavior中有大量的閱讀內容。我開始herehere

注意:如果有人認爲我應該刪除這個問題,因爲它實際上按照建議的方式工作,只是評論如此。我想離開這可能會幫助有人試圖和我一樣做同樣的事情。