2010-03-08 59 views
16

Acabo de comenzar a experimentar con plantillas WPF frente a estilos y no estoy seguro de lo que estoy haciendo mal. El objetivo a continuación es alternar los colores de las opciones en el menú. El código funciona bien con sólo el, pero cuando puedo copiar y pegar/cambiarle el nombre para el segundo segmento de "MenuChoiceOdd" me sale el siguiente error:Error de plantillas WPF: "Proporcionar valor en 'System.Windows.Baml2006.TypeConverterMarkupExtension' lanzó una excepción."

> Proporcionar valor a 'System.Windows.Baml2006.TypeConverterMarkupExtension' tiró una excepción.

ejemplo del código:

<Window x:Class="WpfApplication1.Template_Testing" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Template_Testing" Height="300" Width="300"> 
    <Grid> 
     <Grid.Resources> 
      <ControlTemplate x:Key="MenuChoiceEven"> 
       <Border BorderThickness="1" BorderBrush="#FF4A5D80"> 
       <TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="0" Width="Auto" FontSize="14" Foreground="SlateGray" TextAlignment="Left" AllowDrop="True" Text="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}"> 
        <TextBlock.Background> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="White" Offset="0" /> 
          <GradientStop Color="#FFC2CCDB" Offset="1" /> 
         </LinearGradientBrush> 
        </TextBlock.Background> 
       </TextBlock> 
       </Border> 
      </ControlTemplate> 
      <ControlTemplate x:Key="MenuChoiceOdd"> 
       <Border BorderThickness="1" BorderBrush="#FF4A5D80"> 
        <TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="0" Width="Auto" FontSize="14" Foreground="SlateGray" TextAlignment="Left" AllowDrop="True" Text="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}"> 
        <TextBlock.Background> 
         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
          <GradientStop Color="White" Offset="0" /> 
          <GradientStop Color="##FFCBCBCB" Offset="1" /> 
         </LinearGradientBrush> 
        </TextBlock.Background> 
        </TextBlock> 
       </Border> 
      </ControlTemplate>    
     </Grid.Resources> 
     <Border BorderBrush="SlateGray" BorderThickness="2" Margin="10" CornerRadius="10" Background="LightSteelBlue" Width="200"> 
      <StackPanel Margin="4"> 
       <TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="2,2,2,0" Name="MenuHeaderTextBlock" Text="TextBlock" Width="Auto" FontSize="16" Foreground="PaleGoldenrod" TextAlignment="Left" Padding="10" FontWeight="Bold"><TextBlock.Background><LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"><GradientStop Color="LightSlateGray" Offset="0" /><GradientStop Color="DarkSlateGray" Offset="1" /></LinearGradientBrush></TextBlock.Background></TextBlock> 
       <StackPanel Height="Auto" HorizontalAlignment="Stretch" Margin="2,0,2,0" Name="MenuChoicesStackPanel" VerticalAlignment="Top" Width="Auto"> 
        <Button Template="{StaticResource MenuChoiceEven}" Content="Test Even menu element" /> 
        <Button Template="{StaticResource MenuChoiceOdd}" Content="Test odd menu element" /> 
       </StackPanel> 
      </StackPanel> 
     </Border> 
    </Grid> 
</Window> 

¿Qué estoy haciendo mal?

+0

Sería útil si la excepción incluye un número de línea ... –

Respuesta

11

Oy es lunes ...

al copiar pegar la cadena de color de otro mando que puso dos "##" s en el prefijo aquí:

<GradientStop Color="##FFCBCBCB" Offset="1" /> 

Todavía un mensaje de error pésimo.

+0

Novato en WPF aquí, y realmente es un mensaje de error miedo – swdev

4

que tenían el mismo error causado por:

<Border Margin="5" BorderBrush="Black" BorderThickness="" Width="Auto"/> 

fijado por poner un número en BorderThickness

3

En mi caso, he cambiado el nombre del proyecto. Después de obtener este error. Volví a seleccionar las imágenes y vi que también necesitaba cambiar el nombre del recurso de las imágenes.

 <Image x:Name="imgSrc" Grid.Row="1" Source="/PREV%20-%20Filter;component/Images/Subtraktive%20Farbmischung%20%28Malen%20mit%20Wasserfarben%29.jpg" /> 

/PREV% 20-% 20Filter; componente necesita ser corregido a%/DSP 20% 20Filter; componente en mi caso.

3

Asignar ancho = "*" en la cuadrícula me dio el error, que se ve raro en el primer momento, pero todo lo que está tratando de decir es que el marcado no se pudo convertir al tipo real.

6

Al igual que en otros - este mensaje de error horrible simplemente significaba que tenía un error de sintaxis en mi xaml:

<CheckBox Height="" IsChecked="{Binding IsChecked, Mode=TwoWay}" Width="80"> 

Aviso No me había llenado el valor de la altura ..

+2

El mío fue similar, pero porque lo hice Button Command = "CommandName" en lugar de Command = "{Binding Path = CommandName}". –

0

que tenían la misma cuando se me olvidó llaves:

<DataTrigger Binding="{Binding Path=IsWhiteboardShared}" Value="True"> 
    <Setter Property="Background" Value="StaticResource AccentColorBlueBrush"/> 
</DataTrigger> 
0

que tenía la tarea de arreglar un error en el que un mensaje de error similar se estaba mostrando hasta el infinito. Cuando descubrí que la siguiente causó el problema, yo estaba un poco decepcionado (esperaba algo más complejo y catastrófico!):

<Style BasedOn="{StaticResource LinkButton}" TargetType="Button" > 

donde LinkButton debería haber sido LinkButtonStyle.

1

A diferencia de otros, tenía la sintaxis XAML correcta.

<ImageBrush ImageSource="..\Images\previous_icon.png" />   

Este error comenzó a aparecer cuando cambié mi imagen - más tarde di cuenta de que cambiar la imagen en mi carpeta, pero se olvidó de Incluir en mi proyecto.

Por lo tanto, aunque XAML podría mostrarme la imagen en 'Desgn' View, me enfrenté a esta excepción @ run time. Silly one.

0

que tenían el mismo error cuando se utiliza en lugar de gris gris en mi BorderBrush

<Setter Property="BorderBrush" Value="Grey"/> 

en lugar de

<Setter Property="BorderBrush" Value="Gray"/> 
1

Este es otro ejemplo de este error y cómo lo resolví.

Esto parece haber sido causado por la actualización de mi proyecto de VS2010 a VS2012 y VS2013. No estoy seguro exactamente por qué eso sería un problema aquí, pero creo que sí.

Desarrollé un Asistente de Visual Studio para automatizar el proceso de agregar un proyecto a nuestra gran solución (más de 300 proyectos) ya que existen requisitos adicionales para que los desarrolladores nos ayuden a mantener el proyecto. Usé WPF para el asistente y funcionó bien para VS2010. Actualicé el proyecto a VS2012 y VS2013 y comencé a recibir este error. Resulta que en algún momento la ruta de acceso a mi ícono y mis archivos de imagen fue arruinada. Una vez que lo corrigí, lo cual hice directamente dentro del XAML, dejé de obtener el error.

En caso de que usted puede necesitar recursos que hacen referencia a Ayuda - este es el post que utiliza para corregir mis problemas: How to reference an icon resource file reference in XAML

0

que tenían el mismo error, pero estaba usando el camino equivocado para una imagen en la carpeta de recursos

tuve esta ...

<controls:ImageButton Grid.Column="2" ImageButtonSource="Resources/close_normal.png"/> 

pero necesitaba esto ...

<controls:ImageButton Grid.Column="2" ImageButtonSource="../Resources/close_normal.png"/> 

tuvo que añadir ../ al comienzo de volver una carpeta primera

Cuestiones relacionadas