2017-03-24 2 views
0

J'utilise la classe MetroWindow de Mahapps pour afficher une fenêtre de dialogue quelconque. Mon idée était de créer automatiquement la fenêtre redimensionnable, pour l'adapter est la taille du contenuFenêtre de dialogue redimensionnable dans WPF

<controls:MetroWindow 
    ... 
    DataContext="{Binding DialogVM, Source={StaticResource ViewModelLocator}}" 
    Title="{Binding WindowHeader}" 
    WindowTitleBrush="{StaticResource MainStyleTitleBrush}" 
    Background="{StaticResource MainStyleBackgroundBrush}" 
    wpfExtensions:SizeObserver.Observe="True" 
    wpfExtensions:SizeObserver.ObservedWidth="{Binding xHeight, Mode=OneWayToSource}" 
    wpfExtensions:SizeObserver.ObservedHeight="{Binding xWidth, Mode=OneWay}" 
    MaxWidth="1110" MaxHeight="1080" 
    MinWidth="450" MinHeight="600" 
    ShowMinButton="False" 
    ShowMaxRestoreButton="False" 
    BorderThickness="1" 
    BorderBrush="{StaticResource MainStyleBorderBrush}" 
    SizeToContent="Width" 
    WindowStartupLocation="CenterScreen"> 
    <Grid> 
     <ContentPresenter Content="{Binding VM}"/> 
    </Grid> 
</controls:MetroWindo>  

mais j'ai deux questions première: Ma fenêtre est affectée aux actions des utilisateurs (souris double clic sur le titre, la fenêtre de glisser à gauche ou bord de l'écran droit, et ainsi de suite), et je veux qu'il soit gelé, mais redimensionnable. Deuxième: quand je ré-affiche la même fenêtre (sans la recréer, mais avec un nouveau contenu qui peut avoir une nouvelle taille visible), elle s'affiche sur sa dernière position.

Comment est-ce que je peux résoudre ce problème sans capture d'événement WindowSizeChanged par code-behind?

+0

1) Vous devez définir 'WindowStyle = none' qui sera le titre de la fenêtre 'Désactiver', mais se laisser redimensionnable. 2) Ajouter un 'Border' (rempli de couleur) avec intérieur' Label' qui sera vous 'Titre' 3) Vous pouvez utiliser les propriétés de Windows [Top] (https://msdn.microsoft.com/ru -ru/library/system.windows.window.top (v = vs.110) .aspx) et [Left] (https://msdn.microsoft.com/ru-ru/library/system.windows.window.left (v = vs.110) .aspx) pour stocker la position de la fenêtre. – Shakra

Répondre

1

mis ResizeMode = "noresize" et SizeToContent = "WidthAndHeight"