2013-08-31 9 views
7

Ho creato il seguente controllo utente. . Quando lo aggiungo a una finestra XAML, ottengo l'errore "Impossibile creare un'istanza di 'ucAppItem' Ho trascinato il controllo utente sulla finestra dalla barra degli strumentiImpossibile creare un'istanza di errore "[controllo utente]" nella finestra di progettazione

XAML di controllo utente è la seguente:.

<UserControl x:Class="Demos.ucAppItem" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" Width="852" Height="215"> 
    <Grid> 

     <Label Name="lblTitle" Content="Title" HorizontalAlignment="Left" Margin="233,10,0,0" VerticalAlignment="Top" FontSize="22" FontFamily="Arial"/> 


     <Image Width="40" Height="40" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,80,0"> 
      <Image.Style> 
       <Style TargetType="{x:Type Image}"> 
        <Setter Property="Source" Value="pack://siteoforigin:,,,/arrow2.png"/> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Source" Value="pack://siteoforigin:,,,/arrow1.png"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Image.Style> 
     </Image> 
     <Label x:Name="lblRun" Content="Run" HorizontalAlignment="Right" Margin="0,88,35,0" VerticalAlignment="Top" Foreground="#FF2EAADC" FontSize="20"> 
      <Label.Style> 
       <Style TargetType="{x:Type Label}"> 
        <Setter Property="Foreground" Value="#FF2EAADC"/> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Foreground" Value="#006d9e"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Label.Style> 
     </Label> 
    </Grid> 
</UserControl> 

XAML della finestra è la seguente:!

<Window 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:Demos" x:Class="Demos.Window1" 
     Title="Window1" Height="487" Width="854"> 
    <Grid> 

     <local:ucAppItem/> 

    </Grid> 
</Window> 

Grazie per il vostro aiuto in anticipo

+0

ha funzionato per me. Hai qualcosa scritto nel codice dietro il controllo dell'utente? – Nitin

risposta

4

@Notamente Nikolaev - grazie per il vostro aiuto! Il tuo puntatore sull'etichetta ha risolto il problema che avevo con esso e avevi ragione riguardo all'immagine. Segnalo come risposta la tua risposta. Era la fonte che rappresentava il problema.

La mia etichetta è ora definito come:

<Label x:Name="lblRun" Content="Run" HorizontalAlignment="Right" Margin="0,88,35,0" VerticalAlignment="Top" FontSize="20"> 
     <Label.Style> 
      <Style TargetType="{x:Type Label}"> 
       <Setter Property="Foreground" Value="#FF2EAADC"/> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Foreground" Value="#006d9e"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </Label.Style> 
    </Label> 

La mia immagine è ora definito come:

 <Image> 
      <Image.Style> 
       <Style TargetType="{x:Type Image}"> 
        <Setter Property="Source" Value="{StaticResource arrow2}"/> 
        <Setter Property="Height" Value="40"/> 
        <Setter Property="Width" Value="40"/> 
        <Setter Property="VerticalAlignment" Value="Center"/> 
        <Setter Property="Margin" Value="0,0,80,0"/> 
        <Setter Property="HorizontalAlignment" Value="Right"/> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Source" Value="{StaticResource arrow1}"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </Image.Style> 
     </Image> 

E io disporre di risorse (set nel file App.xaml), impostare come questo:

<Application x:Class="demos.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
     <BitmapImage x:Key="arrow1" UriSource="arrow1.png" /> 
     <BitmapImage x:Key="arrow2" UriSource="arrow2.png" /> 
    </Application.Resources> 
</Application> 
+0

Ho riscontrato un problema simile con alcuni pulsanti che utilizzano ImageBrushes. Spostare le risorse del pennello da UserControl.Resources e in Application.Resources come nel tuo esempio si è rivelato essere il pezzo chiave che mi mancava. – jmbpiano

3

in primo luogo, invece di pack://siteoforigin:,,,/arrow2.png bisogno di scrivere il vostro attuale 01.235.e per assicurarsi che il file esista nel progetto come una risorsa, come questo (MSDN):

pack://application:,,,/arrow1.png 

In secondo luogo, lo stile di innesco per l'etichetta lblRun, non funzionerà perché si imposta a livello locale questo valore Foreground, in WPF hanno una lista di precedenza valore (MSDN), che il valore locale di una priorità maggiore rispetto allo stile di innesco:

<Label x:Name="lblRun" Foreground="#FF2EAADC" FontSize="20" ... /> 

cercare di rimuoverlo Foreground valore locale e utilizzare Style setter:

<Label x:Name="lblRun" Content="Run" HorizontalAlignment="Right" Margin="0,88,35,0" VerticalAlignment="Top" FontSize="20"> 
    <Label.Style> 
     <Style TargetType="{x:Type Label}"> 
      <Setter Property="Foreground" Value="#FF2EAADC"/> 

      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Foreground" Value="#006d9e"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Label.Style> 
</Label> 
+0

Grazie mille per quei suggerimenti! Ho apportato queste modifiche ma sfortunatamente continua a dare l'errore del designer! –

+0

@Rob McCabe: Stranamente, per me funziona. Lo stesso tipo di errore? Se commentate il controllo 'Immagine', l'errore scompare? –

+0

Sì, ora posso aggiungere nuovamente l'etichetta senza errori. Proprio l'immagine sta causando il problema. Ecco cosa ho: –