2017-10-19 31 views
1

J'utilise des modèles MVVM et d'incorporation dans XAML, certains modèles sont construits de manière autonome, mais l'un des modèles doit se référer à un autre dans la construction, parce que les données dans db doivent aussi s'y référer, je n'ai pas trouvé de façon de le faire en XAML, le XAML est comme ceci:Comment faire référence à un autre modèle dans xaml?

 <models:UserModel x:Key="UserModel"></models:UserModel> 
    <models:OrderModel x:Key="OrderModel"> 
     <x:Arguments> 
       {StaticResource UserModel} // what tag to use here? 
     </x:Arguments> 
    </models:OrderModel> 

est-il possible droit de le faire?

Répondre

3

Parce que StaticResource est une extension de balisage, vous pouvez l'utiliser soit par attribute usage, or element usage

<models:OrderModel x:Key="OrderModel"> 
    <x:Arguments> 
      <StaticResource Key="UserModel" /> 
    </x:Arguments> 
</models:OrderModel> 

EDIT - 1

On dirait que lorsque vous utilisez StaticResource l'intérieur x:Arguments - il passe juste sur l'objet d'extension au constructeur; au lieu de le résoudre pour la valeur. Le moyen le plus simple de résoudre ce problème consiste à ajouter une propriété à OrderModel pour affecter l'objet UserModel.

<local:UserModel x:Key="UserModel" /> 
<local:OrderModel x:Key="OrderModel" User="{StaticResource UserModel}"/>