2012-09-26 17 views
13

Sto provando a creare un ResourceDictionary all'interno di un progetto della libreria UserControl di WPF. Quando aggiungo il seguente stile:x: tipo non trovato nella libreria del controllo utente

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="{StaticResource ResourceKey=GreyBrush}"/> 
    <Setter Property="BorderBrush" Value="{StaticResource ResourceKey=LightBlueBrush}"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background" Value="{StaticResource ResourceKey=OrangeBrush}"/> 
     </Trigger> 
     <EventTrigger RoutedEvent="Click"> 
      <BeginStoryboard> 
       <Storyboard> 
        <ColorAnimation Storyboard.TargetProperty="Background.Color" To="{StaticResource ResourceKey=LightOrange}" Duration="0:0:.1"/> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Style.Triggers> 
</Style> 

ottengo un errore che dice:

The type 'x:Type' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built. 

sto dichiarando x come:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

Questo funziona quando creo un dizionario risorse all'interno di un Progetto di applicazione WPF, ma non all'interno di un progetto UserControl Library. Qualche idea del perché?

+0

Non so perché sta accadendo, una soluzione è semplicemente rimuovere il testo {x: Type}, ad esempio 'TargetType =" Button "'. Lo stesso errore si verifica in Silverlight AFAIK. – Patrick

+0

Ma non sempre succede. Almeno lo stile sopra funziona per me in un dizionario di risorse in un progetto di libreria di controllo utente WPF (.Net 4.0) appena creato. – Clemens

+0

Utilizzo VS2012 Professional e creazione di una libreria di controllo utente .Net 3.5 WPF. – FlyingStreudel

risposta

31

Questo è successo a me mentre stavo scrivendo un'estensione IE e volevo creare i controlli utente WPF. Poiché il progetto non era originariamente un progetto WPF, non vi era alcun riferimento a System.Xaml, aggiungendo che tale riferimento risolveva il problema.

+1

Questo lo ha risolto per me! Il progetto ha compilato ma ha sempre visualizzato gli errori (in particolare fastidiosi con la funzione Errori di Esplora soluzioni dell'estensione Productivity Power Tools). – yourbuddypal

+1

Incontrato lo stesso problema/soluzione, ma il colpevole era "System.Presentation". –

1

Devo dissentire, ecco la mia decalarazione da un UserControl che funziona.

<UserControl x:Class="RedGreenRefactor.View.TestResultsGraph" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

C'è qualche possibilità che l'errore ti stia dicendo esattamente cosa c'è che non va? Hai tutti gli assembly referenziati di cui hai bisogno?

Creazione di una nuova applicazione WPF Ho ottenuto quanto segue.

WPF default references

+0

È quello per una libreria 3.5 o 4.0? Sto indovinando 4.0 come Microsoft.CSharp e System.Xaml non sono 3.5 – FlyingStreudel

+0

4.5 in realtà, ma è sempre possibile creare un nuovo wpf vuoto e confrontare per qualsiasi versione – AlSki

+0

I riferimenti sono identici tra il progetto dell'app wpf e la libreria di controllo. – FlyingStreudel

-1

Vi manca la radice

<ResourceDictionary xmlns="..." 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

, vale a dire dove si definisce x? Oltre a quello

<Style TargetType="Button"> 

funziona anche.

2

Aveva lo stesso aspetto nel mio progetto. L'ho risolto cambiando Target Framework da .NET 3.0 a 4.0.