J'ai une fenêtre WPF avec panneau extensible (via Par défaut, les fenêtres sont ancrées en haut à gauche, de sorte que ma fenêtre augmente à droite. J'aimerais que la fenêtre se développe à gauche. P> J'ai essayé de procéder à ce qui suit dans la fenêtre Expander code>). Le panneau se trouve sur le côté gauche de la fenêtre et lorsqu'il est étendu la fenêtre se développe pour s'adapter au contenu.
.Sizecharged code> Evénement: p>
private void onWindowSizeChanged(object sender, SizeChangedEventArgs e)
{
Left -= (e.NewSize.Width - e.PreviousSize.Width)
}
4 Réponses :
Vous pouvez mettre votre expaintier dans une grille (où la taille de la colonne peut changer), puis définir la propriété d'expansion de votre expandeur à gauche? P>
Je veux la fenêtre i> pousser à gauche. L'expandeur se développe à gauche tout simplement bien, mais les fenêtres sont redimensionnées pour s'adapter au contenu à droite (donc tout se déplace).
Essayez d'utiliser la propriété de la fenêtre: Sizetocontent = "Largeur" Ceci permettra à la taille de votre contenu et vous permettra d'accabler votre contenu à l'aide de l'animation et de l'assouplissement, cela fera la mise à l'échelle de la fenêtre agréable et lisse. p>
Vous pouvez créer une fenêtre plus grande que de contenu et rendre votre arrière-plan transparent. Vous devez toujours ajouter de l'arrière-plan à un élément. P>
Voici un exemple de la façon dont cela peut ressembler à:
p>
La solution 1 entraînera toujours la redimensionnement de la fenêtre à gauche, non? Et la solution 2 est agréable mais je ne pourrai pas utiliser une fenêtre régulière avec une barre de titre. Je vais devoir imiter cela moi-même.
Je n'ai pas essayé de faire passer une fenêtre à gauche comme ce que vous demandez, mais si tout échoue, je envisagerais de templier un bouton pour ressembler au bouton Extension. Ensuite, au lieu d'essayer de faire pousser votre fenêtre à gauche, faites passer une nouvelle fenêtre à gauche de votre fenêtre principale à l'aide de Transforms. P>
Eh bien, la mauvaise performance de rendu pourrait être associée à la carte vidéo, la mise en page (trop complexe) liée ou les deux. J'ai une idée qui pourrait faire le tour pour vous. Jeff Prosise a blogué sur une loupe en Silverlight qui utilise un J'ai reçu le code de Jeff pour travailler dans WPF avec peu de modification. P>
WriçableBitmap code> pour atteindre l'effet souhaité. Je pensais: "Pourquoi ne pas utiliser un wwriableBitmap pour créer une capture d'écran de votre mise en page à droite de l'extension et couvre les autres éléments avec cela?". Je pense que si vous faites cela et cachez les éléments sous-jacents (de sorte qu'ils ne sont pas ajustés), la performance de rendu sera très améliorée. P>
Je n'ai pas compris votre suggestion. Pouvez-vous s'il vous plaît élaborer?
@Omer Eh bien, Si I> Je comprends votre situation correctement, vous avez un expandeur qui s'ouvre à gauche. Mais lorsque vous faites cela, la fenêtre redimensionne à droite et tout le contenu du contenu, ce que je suppose, c'est un peu agitée pour vous. Si vous gardez la fenêtre entière intact i>, il n'a jamais besoin de redimensionner ses enfants. Vous pouvez simuler cet effet en utilisant un bouton qui ressemble à un extenseur, mais lorsque vous cliquez dessus, le gestionnaire pourrait créer une fenêtre complètement séparée à gauche de la fenêtre principale, ce qui éviterait tout le problème de redimensionnement. Et vous pouvez le faire animé.
Ok, je l'obtiens - mais c'est un hack avec un effet secondaire: le résultat final ne ressemblera pas à une seule fenêtre (avec une seule barre de titre). Je cherche une solution qui me donnera une seule fenêtre.
re WriceedicBitmap: Je vais essayer une semaine prochaine quand je suis de retour au travail. Si cela fait le travail, je vous accorderai avec plaisir la prime.
Le lien est en panne :(
J'ai réussi à surmonter ceci à l'aide d'une solution simple: masquer et montrer.
voici le code: p> J'ai remplacé le gestionnaire d'événements pour . SIZECHANGED code> avec cette substitution de
FrameworkElement.onRendersizechanged code>. P> p>
Je joue avec votre solution actuelle et cela semble aussi avoir des problèmes. Si vous redimensionnez avec la poignée de la fenêtre (c'est-à-dire n'utilisant pas l'expandeur), le redimensionnement est vraiment agité. À ma fin, l'acte de redimensionnement de la fenêtre brise également votre code de redimensionnement de la fenêtre et il ne se développera plus à gauche.