2009-10-15 6 views
7

Zasadniczo Chcę utworzyć okno, które wygląda tak: alt text http://www.thex9.net/screenshots/2009-10-15_1347.pngdla resizable okna z windowStyle = None

jednak okno nie powinien być zmienny rozmiar (jeden na zrzucie ekranu jest), ale musi zachowaj szklaną granicę. XAML dla okna w zrzucie jest następujący:

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="WpfApplication1.MainWindow" 
    x:Name="Window" Title="MainWindow" WindowStyle="None">  
<Grid x:Name="LayoutRoot"/> 
</Window> 

Czy to możliwe, aby utworzyć okno, które wygląda podobnie do tego w moim zrzucie ale nie jest zmienny rozmiar? Każda pomoc będzie bardzo doceniana.

+0

Ta odpowiedź kopalni może pomóc Wam w dobrym kierunku: http://stackoverflow.com/questions/1469727/creating-custom-forms-in-wpf/1469737#1469737 –

Odpowiedz

17

Jednym ze sposobów uzyskania okna o stałym rozmiarze przy zachowaniu obramowania jest ustawienie właściwości Min [Szerokość | Wysokość] i Maksimum [Szerokość | Wysokość] na taką samą wartość. Granica nadal będzie wyświetlać kursor zmiany rozmiaru, ale użytkownik nie będzie mógł zmienić rozmiaru okna.

Jeśli fakt, że granica nadal wskazuje, że rozmiar jest uciążliwy, następnym krokiem jest ustawienie ResizeMode = "NoResize", ale wtedy musisz rozpocząć rysowanie własnego szkła Aero, jeśli chcesz zachować krawędzie szkła .

+0

Czy istnieje sposób, aby przechwycić wiadomości systemu Windows, aby zatrzymać zmianę kursora, gdy mysz znajduje się poza granicą? – Daniel

+0

Cóż, wiem, że możesz [podłączyć pętlę komunikatów Windows] [1], więc możesz się nad tym zastanowić. Szczerze mówiąc nie jestem pewien, jakie wiadomości oglądać, aby móc przechwycić interakcję z oknem Chrome lub, jeśli to możliwe, nawet. [1]: http://blogs.msdn.com/nickkramer/archive/2006/03/18/554235.aspx –

17

Prawdopodobnie można uzyskać pożądany wynik przez: ResizeMode=
XAML właściwości obiektu, który może trwać mają następujące stany:

  • NoResize - Okno nie może być zmieniany. Przyciski Minimalizuj i Maksymalizuj nie są wyświetlane na pasku tytułu.
  • CanMinimize - Okno można zminimalizować i przywrócić. Przyciski Minimalizuj i Maksymalizuj są wyświetlane, ale włączony jest tylko przycisk Minimalizuj.
  • CanResize - Okno można zmienić. Przyciski Minimalizuj i Maksymalizuj są wyświetlane i włączane.
  • CanResizeWithGrip - Można zmienić rozmiar okna. Przyciski Minimalizuj i Maksymalizuj są wyświetlane i włączane. Uchwyt zmiany rozmiaru pojawia się w prawym dolnym rogu okna.