开发者

Error Cannot create an Instance of "ObjectName" in Designer when using <UserControl.Resources>

开发者 https://www.devze.com 2023-01-03 09:03 出处:网络
I\'m tryihg to bind a combobox item source to a static resource. I\'m oversimplfying my example so that it\'s easy to understand what i\'m doing.

I'm tryihg to bind a combobox item source to a static resource. I'm oversimplfying my example so that it's easy to understand what i'm doing.

So I have created a class

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);
  }开发者_开发百科
}

So the class has a constructor that populates itself using a domaincontext that gets data from a persisted database. I'm only doing reads on this list so dont have to worry about persisting back.

in xaml i add a reference to the namespace of this class then I add it as a usercontrol.resources to the page control.

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

and then i use it this staticresource to bind it to my combobox items source.in reality i have to use a datatemplate to display this object properly but i wont add that here.

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

Now when I'm in the designer I get the error:

Cannot Create an Instance of "A".

If i compile and run the code, it runs just fine. This seems to only affect the editing of the xaml page.

What am I doing wrong?


When running in the designer the full application runtime is not available. However the designer doesn't just magically know how to mock the UI of a UserControl. Its Xaml is parsed and the objects described there are instantiated.

Its up to you to code your classes to cope with existence in a designer. You can use the static proeprty DesignerProperties.IsInDesignTool to determine if your code is currently being used in a designer tool or not.

If in a designer you could deliver a set of test data rather than attempt to access a data service.


My problem is same as described above and i alse used DesignerProperties.IsInDesignTool

but i can't open usercontrol in visual studio for designing purpose

0

精彩评论

暂无评论...
验证码 换一张
取 消