views:

98

answers:

1

I have the following defined at the top of my XAML:

<controls:ChildWindow 
    x:Class="MyProject.SilverlightUI.Views.CharacterGenerator"
    xmlns:my="clr-namespace:MyProject.SilverlightUI.ViewModels" 
>
<controls:ChildWindow.Resources>
    <my:AlignmentsViewModel x:Key="AlignmentsVM" ></my:AlignmentsViewModel>
    <CollectionViewSource x:Key="AlignmentListViewSource" Source="{Binding Path=Alignments, Source={StaticResource AlignmentsVM}}"></CollectionViewSource>
</controls:ChildWindow.Resources>

Then later on I use the AlignmentListViewSource as an ItemSource that I bind to a ComboBox. Everything seems to work correctly except the Designer doesn't like the AlignmentsVM resource. It complains like this:

[Xml_CannotFindFileInXapPackage]
Arguments: ServiceReferences.ClientConfig
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See [broken hyperlink]
   at System.Xml.XmlXapResolver.GetEntity(Uri absoluteUri, String role, Type ofObjectToReturn)
   at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)
   at System.Xml.XmlReader.Create(String inputUri, XmlReaderSettings settings, XmlParserContext inputContext)
   at System.ServiceModel.Configuration.ServiceModelSectionGroup.GetSectionGroup()

I verified that the ServiceReferences.ClientConfig file IS part of the SilverlightUI project and is marked as "Content".

The AlignmentsViewModel calls a webservice in it's constructor, but I'm pretty sure this is a problem with the VS designer, not the class. I can compile and run the project and it runs exactly like I want it to from cassini, populating the combo box. it's just the VS designer that isn't cooperating.

Can anyone advise me as to how I can get the designer to recognize the fact that ServiceReferences.ClientConfig IS available?

A: 

The Visual Studio Designer actually calls the Control's constructor when showing it. If you access resources from the constructor or the UserControl_Loaded event handler, an exception occurs. I've worked around this (reasonable) limitations by providing save values while in designer.

Field declaration static bool isInDesignMode;

Constructor logic // Check for design mode (the Visual Studio Designer is unable to find the AppSettings.xml) bool isInDesignMode = DesignerProperties.GetIsInDesignMode(this);

Method logic string cultures = isInDesignMode ? "en,de" : ConfigurationManager.AppSettings["supportedCultures"];

Christoph Kreß