Im avendo problemi di riferimento classi in xaml da altri assembly.MC3074 - il tipo non esiste in "clr-namespace ..."
Nella stessa soluzione, ho due progetti. Uno chiamato Controlli (per contenere i controlli utente) e uno chiamato DataBinding (in possesso di convertitori/regole di convalida). In un controllo, im tentando di riferimento una regola di convalida in XAML:
<Binding.ValidationRules>
<databind:Validators.FileExistsRule />
</Binding.ValidationRules>
Il mio progetto fa riferimento al progetto che contiene le mie lezioni. Ive ha aggiunto questa dichiarazione in cima alla mia Control.xaml:
xmlns:databind="clr-namespace:GuiParts.DataBinding;assembly=DataBinding"
Tuttavia, quando compilo, ottengo un errore:
The tag 'Validators.FileExistsRule' does not exist in XML namespace 'clr-namespace:GuiParts.DataBinding;assembly=DataBinding'.
La classe esiste sicuramente, posso chiamarlo nel codice dietro senza problemi, ma non via xaml. Se sposto la classe nello stesso progetto, di nuovo, non ho problemi. Ho visto altre domande su qui, e hanno provato quanto segue:
- pulizia e la ricostruzione di tutti i progetti rilevanti
- garantendo a tutti i progetti stanno prendendo di mira la stessa versione di .Net (4.0, completa Profilo)
- Rimozione definizione 'assembly' dalla fine della definizione del namespace.
Nessuno dei precedenti ha funzionato. Qualche suggerimento su dove sto andando storto?
EDIT
mio FileExists Validator:
namespace GuiParts.DataBinding.Validators
{
/// <summary>
/// Validates that the file with the specified name exists
/// </summary>
public class FileExistsRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
ValidationResult res = null;
res = (! File.Exists((string)value))
? new ValidationResult(false, "File does not exist")
: new ValidationResult(true, null);
return res;
}
}
}
posso chiamare il seguente nel codice dietro senza errori:
new GuiParts.DataBinding.Validators.FileExistsRule();
Così Ive ha ottenuto i miei spazi dei nomi, ecc corretta.
Non Sei metodo può essere un 1 istruzione linea: 'restituisce File.Exist (valore (stringa))? new ValidationResult (false, "File inesistente."): new ValidationResult (true, null); ' –
Mai capito? –