Окна без изменения размера с windowStyle=None

По сути, я хочу создать окно следующего вида: http://www.thex9.net/screenshots/2009-10-15_1347.png

Однако размер окна не должен изменяться (как показано на скриншоте), но оно должно сохранять стеклянную рамку. XAML для окна на снимке экрана выглядит следующим образом:

<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>

Можно ли создать окно, похожее на то, что на моем снимке экрана, но не изменяющее размер? Любая помощь будет очень высоко ценится.


person Daniel    schedule 15.10.2009    source источник
comment
Этот мой ответ может помочь вам в правильном направлении: stackoverflow.com/questions/1469727/   -  person Matt Hamilton    schedule 15.10.2009


Ответы (2)


Вероятно, вы можете получить желаемый результат: ResizeMode=
Свойство объекта XAML, которое может принимать следующие состояния:

  • NoResize — нельзя изменить размер окна. Кнопки «Свернуть» и «Развернуть» не отображаются в строке заголовка.
  • CanMinimize — окно можно только свернуть и восстановить. Кнопки «Свернуть» и «Развернуть» отображаются, но активна только кнопка «Свернуть».
  • CanResize — можно изменить размер окна. Кнопки «Свернуть» и «Развернуть» отображаются и активны.
  • CanResizeWithGrip — можно изменить размер окна. Кнопки «Свернуть» и «Развернуть» отображаются и активны. Ручка изменения размера появится в правом нижнем углу окна.
person Wojciech Papaj    schedule 16.02.2015

Один из способов получить окно фиксированного размера с сохранением границы — установить для свойств Min[Width|Height] и Max[Width|Height] одно и то же значение. На границе по-прежнему будет отображаться курсор изменения размера, но пользователь не сможет изменить размер окна.

Если вас беспокоит тот факт, что граница по-прежнему указывает на возможность изменения размера, следующим шагом будет установка ResizeMode="NoResize", но затем вам придется начать рисовать собственное стекло Aero, если вы хотите сохранить края стекла.

person Drew Marsh    schedule 15.10.2009
comment
Есть ли способ перехватить сообщения Windows, чтобы остановить изменение курсора, когда мышь находится за границей? - person Daniel; 16.10.2009
comment
Что ж, я знаю, что вы можете [зацепить цикл сообщений Windows][1], так что вы можете изучить это. Честно говоря, я не уверен, за какими сообщениями нужно следить, чтобы иметь возможность перехватывать взаимодействие с Window Chrome, или если вы вообще можете это сделать. [1]: blogs.msdn.com/nickkramer/archive/ 2006/03/18/554235.aspx - person Drew Marsh; 16.10.2009