2010-11-17 13 views
5

Plusieurs fois j'ai vu que le code MeasureOverride et ArrangeOverride est la même mesure d'appel excepte et organiser dans les méthodes respectives et un peu de logique supplémentaire comme l'animation etc pour chaque élément dans ArrangeOverride. Est-ce que ce ne serait pas simple si vous avez juste une méthode pour passer votre logique de mesure à un endroit et le système de mise en page se souvient que et avoir un événement lorsque chaque élément est sur le point d'ajouter et vous appliquez la logique supplémentaire d'animation?Système de mise en page à deux passes dans WPF et Silverlight

Est-ce que je manque quelque chose?

Répondre

9

Oui, il vous manque la différence subtile entre les deux.

Dans MeasureOverride, le parent demande l'enfant la taille qu'il veut être.

Dans ArrangeOverride, le parent dit l'enfant combien d'espace il a fait et où il est placé. C'est comme le budget ou le temps passé en revue dans votre travail: votre patron vous demande combien d'argent vous voulez, puis rit et vous dit combien vous obtiendrez et quand. Comme le contrôle des enfants, vous devez alors faire de votre mieux avec ce que vous avez reçu. Pour mettre un peu en perspective, l'un des points clés de WPF est l'interface utilisateur évolutive. Tout comme le scénario patron/employé ci-dessus, les besoins du contrôle parent/enfant doivent être maintenus en équilibre. Tout simplement parce qu'un enfant contrôle demande une certaine taille, cela ne signifie pas que le contrôle parent a cet espace à donner, donc cela doit être communiqué à l'enfant. OTOH, avec la taille croissante des moniteurs, votre enfant peut se retrouver avec beaucoup plus de biens immobiliers que ce dont il a vraiment besoin.