Как Вы отключаете Аэро Снимок в приложении?

Действительно ли возможно отключить автоматическую прикрепляющую окно опцию Windows 7 в приложении WPF?

9
задан user7116 18 September 2012 в 14:09
поделиться

3 ответа

У меня здесь нет Windows 7, поэтому я не могу это проверить, но вот что я бы попробовал:

1- Создайте тестовую форму и переопределить WndProc
2- Тестировать и регистрировать определенные сообщения, относящиеся к изменению размера, положения и состояния окна.
3- Определите , являются ли сообщения, отправляемые окну, когда оно закреплено, комбинацией Size / Position / WindowState или есть другое новое сообщение Windows 7 (5 минут поиска ничего мне не раскрыл.)
4- Получив сообщения, проверьте, не возникает ли "уникальный" случай.
5- Измените код в соответствии с этим уникальным случаем.

Если никто другой ничего не придумает, я могу попробовать это дома в эти выходные.

0
ответ дан 4 December 2019 в 07:14
поделиться

В разделе Специальные возможности панели управления выберите

Упростите фокусировку на задачах

и поставьте галочку

Запретить автоматическое упорядочение окон при перемещении к краю экрана

-3
ответ дан 4 December 2019 в 07:14
поделиться

Если вы приводите пример «Sticky Notes» Win7, вы могли заметить, что у него НЕТ стандартной границы окна. Исходя из этого, я могу только сказать вам, что нет прямого способа сделать это, за исключением того, что вы установили ResizeMode = "NoResize" и вручную обработали поведение изменения размера. Ниже приводится очень простое непрофессиональное решение, которое я быстро создал, чтобы вы начали, но вы можете добавить больше функций, если хотите:)

<Window
    x:Class="WpfApplication1.Window1"
    x:Name="window"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1"
    Width="300"
    Height="300"
    ResizeMode="NoResize"
    WindowStyle="None"
    AllowsTransparency="True"
    Background="Transparent"
    WindowState="Maximized">

    <Window.Resources>
        <x:Array
            x:Key="TextBlockList"
            Type="{x:Type TextBlock}">
            <TextBlock
                Text="○ Resize Horizontally by dragging right grip" />
            <TextBlock
                Text="○ Resize Vertically by dragging bottom grip" />
            <TextBlock
                Text="○ Move Horizontally by dragging left grip" />
            <TextBlock
                Text="○ Move Verticallyby dragging top grip" />
        </x:Array>
    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition
                Height="Auto" />
            <RowDefinition
                Height="{Binding Height, Mode=OneWay, ElementName=window}" />
            <RowDefinition
                Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition
                Width="Auto" />
            <ColumnDefinition
                Width="{Binding Width, Mode=OneWay, ElementName=window}" />
            <ColumnDefinition
                Width="Auto" />
        </Grid.ColumnDefinitions>

        <GridSplitter
            Grid.Column="1"
            Grid.Row="1"
            HorizontalAlignment="Left"
            MinWidth="5" />

        <GridSplitter
            Grid.Column="1"
            Grid.Row="1"
            HorizontalAlignment="Right"
            MinWidth="5" />

        <GridSplitter
            Grid.Column="1"
            Grid.Row="1"
            VerticalAlignment="Top"
            MinHeight="5"
            ResizeDirection="Rows"
            HorizontalAlignment="Stretch" />

        <GridSplitter
            Grid.Column="1"
            Grid.Row="1"
            VerticalAlignment="Bottom"
            MinHeight="5"
            ResizeDirection="Rows"
            HorizontalAlignment="Stretch" />

        <Border
            Grid.Column="1"
            Grid.Row="1"
            Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
            Margin="5">

            <Grid x:Name="root">
                <ItemsControl
                    ItemsSource="{StaticResource TextBlockList}" />
            </Grid>

        </Border>

    </Grid>
</Window>

Вы даже можете создать элемент управления (в основном панель), размер которого можно изменять и перемещается в пределах своего родительского холста. Теперь этот элемент управления можно заполнить в прозрачном развернутом окне. Это даст вам иллюзию того, что ваш элемент управления - это окно, которое не реагирует на «Window Snap» и не стыкуется!

Надеюсь, это поможет.
С уважением,
Михир Гокани

5
ответ дан 4 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: