2017-03-24 5 views
0

Ich benutze die MetroWindow-Klasse von Mahapps, um irgendein Dialogfenster zu zeigen. Meine Idee war, auto veränderbares Fenster zu erstellen, es ist Inhalt GrößeVeränderbares Dialogfenster in 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>  

passen, aber ich habe zwei Fragen ersten: Mein Fenster auf Benutzeraktionen (Mouse Doppelklick auf Titel betroffen ist, ziehen Fenster nach links oder rechte Bildschirmkante, und so weiter), und ich möchte, dass es eingefroren wird, aber in der Größe veränderbar ist. Zweite: wenn ich das gleiche Fenster erneut zeige (ohne es neu zu erstellen, aber mit neuem Inhalt, der eine neue sichtbare Größe haben kann), zeigt es auf seiner letzten Position.

Wie kann ich diese Probleme ohne Code-Behind WindowSizeChanged Event Catch lösen?

+0

1) Sie müssen 'Window = None' das wird 'Disable' Fenster-Titel setzen, aber wird es resizable verlassen. 2) Fügen Sie ein 'Border' (gefüllt mit etwas Farbe) mit innerem' Label' hinzu, das werden Sie 'Titel' 3) Sie können Window Eigenschaften verwenden [Top] (https://msdn.microsoft.com/ru -ru/library/system.windows.window.top (v = vs.110) .aspx) und [Left] (https://msdn.microsoft.com/ru-ru/library/system.windows.window.left (v = vs.110) .aspx) um die Position des Fensters zu speichern. – Shakra

Antwort

1

put ResizeMode = "noresize" und SizeToContent = "WidthAndHeight"

Verwandte Themen