Je veux que la fenêtre respecte Certains ont suggéré d'utiliser Autres suggérées juste pour mentionner une autre solution qui semble raisonnable mais ne fonctionne pas em> pas (et avait déjà été mentionnée dans une réponse qui a été supprimée): Binding minwidth code> /
minheight code> et
maxwidth code> /
MaxHeight code> Spécifications du contrôle de contenu à l'intérieur . p>
sizetocontent code>, mais cela aide uniquement à définir la taille de la fenêtre initiale, pas les contraintes. P>
Measeverride CODE> et de la planification de la fenêtre et de la largeur de la fenêtre et de la largeur de la fenêtre, mais cela semble être un peu impur, considérant qu'un tel problème trivial devrait sûrement avoir une solution purement déclarative. P >
Minwidth code> de la fenêtre à < Code> Minwidth code> du contrôle ne prend pas en compte les décorations de la fenêtre. P>
3 Réponses :
Si la taille de la fenêtre initiale est définie de manière à ce que la taille du contenu réel ne soit pas contraincée par le minwidth / minheight et maxwidth / maxheight du contenu dans la carte de mise en page initiale (par exemple, à l'aide de fenêtre.Sizetocontent = "widthanandheight"), puis suivant Les équations sont vraies: sur la base de ces équations, vous pouvez dériver le code suivant: p> Je ne sais pas comment atteindre cela efficacement Utilisation de l'approche déclarative pure puisque le code doit être manifesté juste une fois après le passage initial de la mise en page. P> P>
Savez-vous si SIZECHANGED sera tiré dans l'affaire Minwidth / Minheight ou Maxwidth / MaxHeight du changement de contenu? Ou devrais-je attacher une liaison à ces propriétés séparément?
Ceci est définitivement utile, je vérifie actuellement si cela résout tout mon problème.
Utiliser une extension de balisage de liaison. Une contraignante est la manière du WPF de dire lorsque cette propriété (source) modifie met à jour une autre propriété (cible). Dans ce cas, la propriété Minwidth de la grille est la source et la propriété Minwidth de la fenêtre est la cible.
<Window x:Class="MinMaxValuesOnWindows.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="600" Width="800" MinWidth="{Binding ElementName=gridy, Path=MinWidth}" MinHeight="{Binding ElementName=gridy, Path=MinHeight}" MaxWidth="{Binding ElementName=gridy, Path=MaxWidth}" MaxHeight="{Binding ElementName=gridy, Path=MaxHeight}"> <Grid Name="gridy" MinHeight="80" MinWidth="80" MaxHeight="300" MaxWidth="300"/> </Window>
Ce que vous dites est techniquement vrai, mais comme je l'ai noté dans la question, la principale difficulté que je suis confrontée consiste à déterminer les dimensions de la décoration de manière indépendante du thème. L'autre réponse résout cette partie du puzzle, je l'accepterai.
Certains ont suggéré d'utiliser
sizetocontent code>, mais cela aide uniquement à définir la taille de la fenêtre initiale, pas les contraintes. P>
J'ai travaillé autour de cela en définissant le
Minwidth code> et
Minheight code> Propriétés juste après strong> Les fenêtres ont été initialisées: p>
< fort> mainwindow.xaml strud> p>
xxx pré> mainwindow.xaml.cs strong> p>
xxx pré> BlockQuote>