2010-02-02 5 views
3

Ceci est très similaire à cela question J'ai demandé plus tôt. J'espère être plus clair et obtenir une réponse différente.WPF - Créer un objet UI à partir d'un DataTemplate

J'ai un objet de données (appelé MockUI). Il dispose d'un modèle de données (en app.xaml) comme ceci:

<DataTemplate DataType="{x:Type local:MockWI}"> 
    <Button Content="{Binding Name}"/> 
</DataTemplate> 

Dans mon code, je veux créer un objet de l'interface utilisateur que ce que le modèle de données est. Donc, j'ai myMockWI et je veux savoir quel modèle utiliserait et obtenir l'objet qu'il crée (dans ce cas un bouton avec le contenu défini sur myMockWI).

J'ai essayé de faire juste un bouton:

Button myButton = new Button {Content = myMockWI} 

mais comme vous pouvez probablement le deviner, qui crée le bouton met alors un autre bouton à l'intérieur ce bouton (parce que le modèle de données est appliqué). Comment puis-je avoir un seul bouton?

+0

Pouvez-vous passer un peu plus de temps sur votre poste .. il est un peu déroutant. Quel est le cas d'utilisation pour cela? MockWI est-il une faute de frappe de MockUI? Essayez-vous de récupérer par programmation la vue (créée à partir d'un datatemplate) d'une instance spécifique? – Gishu

+0

@Gishu: merci pour l'indice sur la nécessité d'un meilleur poste. Je pense que je me suis figuré celui-ci par moi-même ou je mettrais absolument mieux/plus d'infos. – Vaccano

Répondre

2

Il s'avère que j'avais juste besoin de remonter un peu l'arbre de l'interface utilisateur.

Si je crée un nouveau ContentControl, alors il n'a pas de look et prend le type de données.

Alors mes changements de code en haut à ceci:

ContentControl myControl = new ContentControl {Content = myMockWI}; 
+1

Vous avez raison de le faire. Tout ce qui dérive de ContentControl peut également utiliser DataTemplate avec DataType défini pour héberger l'objet de données, par exemple. ContentPresenter, ListBox, ListView, etc. –

Questions connexes