2010-06-09 23 views
4

時,無法在Designer中創建「ObjectName」的實例我嘗試將組合框項目源綁定到靜態資源。我簡單地介紹了我的例子,這樣就很容易理解我在做什麼。在使用<UserControl.Resources>

所以我創建了一個類

public class A : ObservableCollection<string> 
{ 
    public A() 
    { 
    IKBDomainContext Context = new IKBDomainContext(); 
     Context.Load(Context.GetIBOptionsQuery("2C6C1Q"), p => 
     { 
      foreach (var item in SkinContext.IKBOptions) 
      { 
       this.Add(item); 
      } 
     }, null); 
    } 
} 

因此類有填充本身使用domaincontext從一個持久化數據庫中獲取數據的構造函數。我只是在讀這個清單,所以不必擔心堅持回來。

xaml我添加了對這個類的命名空間的引用,然後我將它作爲一個usercontrol.resources添加到頁面控件中。

<UserControl.Resources> 
    <This:A x:Key="A"/> 
</UserControl.Resources> 

,然後我用它這個靜態資源將其綁定到我的組合框項目source.in現實我必須使用一個DataTemplate無法正常顯示此對象,但我不會添加在這裏。

<Combobox ItemsSource="{StaticResource A}"/> 

現在,當我在設計是我得到的錯誤:

無法創建「A」的一個實例。

如果我編譯並運行代碼,它運行得很好。這似乎隻影響編輯xaml頁面。

我在做什麼錯?

回答

6

在設計器中運行時,完整的應用程序運行時不可用。然而,設計者不只是神奇地知道如何模擬UserControl的UI。它的Xaml被解析,並且那裏描述的對象被實例化。

它取決於你編碼你的類來應付設計師的存在。您可以使用靜態proeprty DesignerProperties.IsInDesignTool來確定您的代碼當前是否在設計工具中使用。

如果在設計者中可以提供一組測試數據而不是嘗試訪問數據服務。如上所述,我ALSE使用DesignerProperties.IsInDesignTool

但我可以

+0

謝謝!我認爲這是問題!謝謝。 – 2010-06-10 22:13:03

0

我的問題是不一樣打開用戶控件在Visual Studio設計目的