2010-04-20 7 views

Répondre

1

Je ne suis pas sûr que vous appelez ça, mais ... propre

  • vous Créer un nouveau contrôle et Templated appellent ImmovableChildWindow.
  • Modifiez la classe dont elle hérite pour qu'elle soit ChildWindow.
  • ouvert Thèmes/generic.xaml vous trouverez un style initial pour le ImmoveableChildWindow
  • Dans la documentation Silverlight vous trouverez le modèle existant pour un ChildWindow à ChildWindow Styles and Templates.
  • Notez la valeur TargetType existante pour le style ImmovableChildWindow. Copier et coller tout le style par défaut pour un ChildWindow de la documentation dans votre fichier themes/generic.xaml.
  • Remplacez TargetType par cette copie à la même valeur que le style ImmovaleChildWindow existant.
  • Vous pouvez maintenant supprimer le style initial. Laissez uniquement la grande copie du style ChildWindow ciblant maintenant ImmovableChildWindow.
  • Rechercher dans le Template setter changer le TargetType de la même valeur que le style TargetType
  • Recherche par le modèle et trouver un Border avec le nom Chrome. Supprimez l'attribut x:Name="Chrome". (C'est ce que nous sommes vraiment après).

Maintenant, lorsque vous créez un nouvel élément de ChildWindow il sera par la forme inherit par défaut ChildWindow, si vous voulez qu'il soit immobile, vous devez modifier pour hériter de ImmovableChildWindow à la place (changer le type de base dans le code-behind et la le nom de l'étiquette racine dans le xaml).

Le ChildWindow attache des événements au FrameWorkElement avec le nom "Chrome" qui permet de déplacer la fenêtre enfant. Cependant, étant donné qu'il s'agit d'un contrôle basé sur un modèle bien conçu, s'il ne peut pas trouver un FrameworkElement appelé "Chrome", il continue à fonctionner sans cette fonctionnalité.

+0

Bonne réponse, Anthony! –

0

Vous pouvez peut-être essayer cette méthode simple: Créez une grille pour déformer tout le contenu de votre fenêtre ChildWindow.

<Grid Margin="0"> 

<!--Your ChildWindow. Canvas, Grid, Textblock...Whatever--> 

</Grid> 

Étant donné que la grille a une marge 0, vous ne pouvez pas cliquer dessus et la déplacer.

1

Non requis pour créer une nouvelle classe, au lieu

  1. Copie le style de: http://msdn.microsoft.com/en-us/library/dd833070%28VS.95%29.aspx
  2. Donnez x:key="stylename"
  3. Dans Construtor de Childwindow, coller le code ci-dessous avant InitializeComponent:

    this.Style = App.Current.Resources["childWindow"] as Style;

ci-dessus solution résolu mon problème

Questions connexes