8

Tengo un problema extraño al abrir mi UserControl en Expression Blend cuando uso un control de Silverlight Toolkit. Mi control de usuario utiliza ListBoxDragDropTarget de la caja de herramientas de la siguiente manera:XamlParseException utilizando el control de Silverlight Toolkit en Expression Blend

<controlsToolkit:ListBoxDragDropTarget mswindows:DragDrop.AllowDrop="True" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"> 
     <ListBox ItemsSource="{Binding MyItemControls}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
      <ListBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <controlsToolkit:WrapPanel/> 
       </ItemsPanelTemplate> 
      </ListBox.ItemsPanel> 
     </ListBox> 
</controlsToolkit:ListBoxDragDropTarget> 

todo funciona como se esperaba en tiempo de ejecución y se ve bien en Visual Studio 2008. Sin embargo, cuando intento abrir mi control de usuario en Blend consigo XamlParseException: [Línea: 0 Posición: 0] y no puedo ver nada en la vista de diseño. Más específicamente Blend se queja:

El elemento "ListBoxDragDropTarget" No se pudo mostrar debido a un problema con System.Windows.Controls.ListBoxDragDropTarget: TargetType desajuste.

Mi aplicación Silverlight hace referencia System.Windows.Controls.Toolkit desde el lanzamiento conjunto de herramientas noviembre de 2009, y me he asegurado de incluir estas declaraciones de espacio de nombres para el ListBoxDragDropTarget:

xmlns:controlsToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
xmlns:mswindows="clr-namespace:Microsoft.Windows;assembly=System.Windows.Controls.Toolkit" 

Si yo Comente el contenedor de control ListBoxDragDropTarget y simplemente deje el ListBox. Puedo ver todo bien en la vista de diseño sin errores. Además, me di cuenta de que esto está sucediendo con una variedad de controles de Silverlight Toolkit porque si comento hacia fuera ListBoxDragDropTarget y reemplazarlo con

<controlsToolkit:BusyIndicator /> 

se produce el mismo error exacto en Blend. Lo que es aún más extraño es que si comienzo una nueva aplicación Silverlight en combinación, puedo agregar estos elementos del kit de herramientas sin ningún tipo de error, por lo que parece ser algo tonto lo que está sucediendo con las referencias de mi proyecto a los conjuntos de herramientas.

Estoy bastante seguro de que esto tiene algo que ver con cargar los estilos predeterminados para los controles del kit de herramientas de su generic.xaml, ya que el error tiene que ver con TargetType y Blend probablemente está intentando cargar los estilos predeterminados.

¿Alguien ha encontrado este problema antes o tiene alguna idea sobre cuál puede ser mi problema?

+0

versión de Blend? – AnthonyWJones

+0

Expression Blend 3, específicamente 3.0.1927.0 –

Respuesta

11

Hola, tuvimos exactamente el mismo problema, lo resolvimos comprobando las referencias en el proyecto que estaba teniendo este problema. Todos los conjuntos de herramientas de referencia deben estar en el mismo directorio en el disco.

Nuestra referencia de proyecto a System.Windows.Controls.Toolkit.dll siempre 'saltaba' de nuevo a la ruta original que estaba causando nuestro problema. Lo solucionamos editando el archivo del proyecto en Notepad ++ (o cualquiera de sus editores de texto favoritos) y codificando la ruta donde podría encontrar el ensamblaje.

Espero que esto ayude.

+0

I echó el proyecto que estaba teniendo este problema hace mucho tiempo y terminó haciendo otras cosas, así que no tengo manera de verificar esto. Voy a marcarlo como la respuesta por ahora ya que parece que otros enfrentan este problema, si no funciona para mucha gente, puedo abrirlo de nuevo. –

+0

Gracias, realmente me salvaste dos días de estupidez;) – Peymankh

+0

muchas gracias, también me salvaste el día :) :) –

5

Para Visual Studio (tal vez demasiado Blend) es necesario agregar una referencia a:

System.Windows.Controls.Toolkit.Internals.dll

"C: \ Archivos de programa \ Microsoft SDKs \ Silverlight \ v4.0 \ Toolkit \ Apr10 \ Bin \ System.Windows.Controls.Toolkit.Internals.dll "

+0

Esto lo resolvió para mí. Tenga en cuenta que la última versión (para Silverlight 5) se encuentra en "C: \ Archivos de programa (x86) \ Microsoft SDKs \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Bin \ System.Windows.Controls.Toolkit.Internals.dll – andrewpm

1

estoy usando Silverlight 5 conjunto de herramientas y tener XamlParseException al utilizar el control BusyIndicator conjunto de herramientas de Expression Blend para SL 5, todas las soluciones anteriores no han ayudado, pero he encontrado otra solución, a su vez sucia, pero me permite hacer el trabajo en BusyIndecator Expression Blend,

  1. derivan de control de

    public class BusyIndicatorEx : BusyIndicator 
    { 
        public BusyIndicatorEx() 
        { 
         this.DefaultStyleKey = typeof(BusyIndicatorEx); 
        } 
    } 
    
  2. crear un estilo de control derivada (sólo tienes que copiar el estilo de BusyIndicator código fuente a th EME/generic.xaml, y el tipo de cambio de destino para local:BusyIndicatorEx)

+0

¿Cómo puedo copiar? el estilo de BusyIndicator? ¿Dónde está "themes/generic.xaml"? – Jordan

0

I tenían el mismo problema que se ha resuelto mediante la introducción de una referencia maniquí en código detrás al Panel Wrap.

Sé que es un poco C++ y pero me puedo imaginar es porque tenemos una referencia indirecta para envolver el panel dentro de una plantilla y no en la página de nivel superior para que el cargador no sepa qué cargar en la inicialización . Aunque me gusta mucho entender la razón exacta.

simplemente hice referencia System.Windows.Controls.Toolkit y presento siguiente miembro de código subyacente:

System.Windows.Controls.WrapPanel _dummy; 
Cuestiones relacionadas