2011-05-19 8 views
0

Je suis aux prises avec des modèles de contrôle. Je construis actuellement une interface utilisateur qui a plusieurs volets qui sont essentiellement construits à partir de contrôles plus basiques.Comment accéder et fournir des valeurs par défaut aux contrôles dans les modèles WPF?

est ici comment un de nos panneaux de construction ressemble en ce moment:

<Grid> 

    <StackPanel> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Template="{StaticResource StringCtrl}" Content="Cash Event Value:"/> 
     </ContentControl> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Template="{StaticResource RateCtrl}"></ContentControl> 
     </ContentControl> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Grid.Row="0" Template="{StaticResource FromCtrl}"></ContentControl> 
     </ContentControl> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Grid.Row="0" Template="{StaticResource StartEndDateCtrl}"></ContentControl> 
     </ContentControl> 

     <ContentControl Template="{StaticResource ConstructionBorderCtrl}"> 
      <ContentControl Grid.Row="0" Template="{StaticResource ComboStringCtrl}">Applicable Size:</ContentControl> 
     </ContentControl> 

    </StackPanel> 

</Grid> 

est ici un modèle pour la StringCtrl comme exemple:

<ControlTemplate x:Key="StringCtrl" TargetType="ContentControl"> 

    <Grid Margin="5"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="auto" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <TextBlock Name="ctrlText" Margin="0,0,5,0" Text="{TemplateBinding Content}"></TextBlock> 
     <TextBox Name="ctrlDefaultValue" Grid.Column="1" /> 
    </Grid> 
</ControlTemplate> 

Comme vous pouvez le voir à partir du modèle, il est vraiment juste une étiquette et une zone de texte. Supposons maintenant que je souhaite fournir une valeur par défaut à la zone de texte et effectuer une validation sur les entrées utilisateur, mais je souhaite fournir ce contexte à partir du volet Construction parent et le lier aux éléments individuels à l'intérieur des modèles. Comment ferais-je cela?

+0

me semble que vous allez dans le mauvais sens. Pourquoi utilisez-vous des modèles pour cela? Si vous cherchez à créer une conception modulaire, utilisez UserControls. –

Répondre

1

Ceci est certainement un design que je n'ai jamais vu auparavant. Je pense que UserControls ou un autre type de contrôle personnalisé fonctionnerait mieux pour cela que l'approche ControlTemplate. Mais si vous voulez vraiment suivre cette voie, je pourrais peut-être voir un comportement qui fonctionne pour vous s'il y a une certaine cohérence dans votre structure/nommage dans les modèles - vous pouvez définir des propriétés sur le comportement et le comportement peut accéder au contrôle via sa propriété AssociatedObject pour pouvoir définir les valeurs des enfants et effectuer la validation.

Cela me semble beaucoup de travail.

+0

c'était un design de merde, alors nous sommes passés à l'utilisation de contrôles usuels. Merci pour l'entrée les gars! – Steve

Questions connexes