Ho un set di controlli con comandi e logica allegati che vengono costantemente riutilizzati nello stesso modo. Ho deciso di creare un controllo utente che contiene tutti i controlli e la logica comuni.Come creare un UserControl WPF con contenuto NAMED
Tuttavia, ho anche bisogno che il controllo sia in grado di contenere il contenuto che può essere denominato. Ho provato il seguente:
<UserControl.ContentTemplate>
<DataTemplate>
<Button>a reused button</Button>
<ContentPresenter Content="{TemplateBinding Content}"/>
<Button>a reused button</Button>
</DataTemplate>
</UserControl.ContentTemplate>
Tuttavia sembra che qualsiasi contenuto inserito nel controllo utente non possa essere denominato. Per esempio, se io uso il controllo nel seguente modo:
<lib:UserControl1>
<Button Name="buttonName">content</Button>
</lib:UserControl1>
ricevo il seguente errore:
Cannot set Name attribute value 'buttonName' on element 'Button'. 'Button' is under the scope of element 'UserControl1', which already had a name registered when it was defined in another scope.
Se rimuovo il buttonname, poi si compila, però ho bisogno di essere in grado di nome il contenuto. Come posso raggiungere questo obiettivo?
Questa è una coincidenza. Stavo per fare questa domanda! Ho lo stesso problema. Elaborazione di pattern UI comuni in un UserControl, ma che desiderano fare riferimento all'interfaccia utente del contenuto per nome. – mackenir
Perché non usi il metodo ResourceDictionary? Definire il DataTemplate in esso. O utilizzare la parola chiave BasedOn per ereditare il controllo. Solo alcuni percorsi che avrei seguito prima di eseguire l'UI code-behind in WPF ... –
Questo ragazzo ha trovato una [soluzione] (http://blog.bluecog.co.nz/archives/2007/08/27/wpf-cannot -set-name-attribute /) che comporta la rimozione del file XAML del suo controllo personalizzato e la creazione dell'interfaccia utente del controllo personalizzato a livello di programmazione. Questo [post di blog] (http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2130.entry?wa=wsignin1.0&sa=752255111) ha altro da dire sull'argomento. – mackenir