Как создать Windows с WPF, которая будет выглядеть как окна области уведомлений в Windows 7?

Есть ли способ создавать окна, подобные собственной области уведомлений Windows 7 Windows с Windows Presentation Foundation? Например, элементы управления звуком или настройки схемы электропитания.

Мне удалось создать окно с Windows Forms, которое выглядело одинаково, но все еще имел курсор изменения размера, когда вы наводили курсор на границы. Я использую следующий код:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        ResizeMode="NoResize" ShowInTaskbar="False" Topmost="True"
        DataContext="{Binding}" WindowStyle="SingleBorderWindow"
        WindowStartupLocation="Manual" ShowActivated="False"
        IsManipulationEnabled="False" mc:Ignorable="d"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        d:DesignHeight="218" d:DesignWidth="368" SizeToContent="WidthAndHeight">
    <Grid>

    </Grid>
</Window>

Моя проблема в том, что я не могу полностью удалить строку заголовка и кнопку закрытия. Или есть библиотека для создания таких окон?

Я хотел выложить скриншоты, но не смог, так как у меня еще нет 10 очков репутации.

Спасибо за любую помощь!


person pvorb    schedule 26.08.2010    source источник


Ответы (2)


Вы не можете сделать это только с WPF. Вам нужно выполнить взаимодействие с Win32 и удалить из окна стили WS_CAPTION и WS_SYSMENU.

Вот мой ответ на аналогичный вопрос SO, в котором есть пример кода о том, как управлять стилем окна и расширенным стилем.

person Franci Penov    schedule 26.08.2010

Вы можете придать своему окну все, что захотите. Установите WindowStyle на None и AllowsTransparency на true в дополнение к тому, что у вас уже есть. Затем вы можете применить свой собственный ControlTemplate к Window и сделать его похожим на все, что вы можете найти, включая частичную прозрачность и странные формы.

person John Bowen    schedule 27.08.2010
comment
Хотя это правда, существуют известные ограничения на изменение размера, неклиентскую область и развернутые окна при использовании WindowStyle=None. По-прежнему требуется немного взаимодействия с Win32, чтобы такие окна работали так, как должны. - person Franci Penov; 27.08.2010
comment
Как часто вы изменяете размер и максимизируете окна уведомлений? - person John Bowen; 27.08.2010