Создание окна формы, перемещаемого с помощью мыши - PullRequest
1 голос
/ 30 декабря 2011

Я сделал форму в Microsoft Expression Blend WPF. Поля формы находятся на отформатированном прямоугольнике. Что я сделал, это скрыл оригинальное окно. Теперь все выглядит идеально, за исключением того, что когда я запускаю приложение, я не могу перемещать форму с помощью мыши. Что может быть решением для этого ??

Вот скриншот.

enter image description here

1 Ответ

1 голос
/ 30 декабря 2011

Чтобы добиться этого эффекта, попробуйте следующее.

В элементе Window:

  1. Установите для свойства WindowStyle значение None.
  2. Установите для фона значение Null.
  3. Установите для параметра AllowsTransparency значение True.

Сгруппируйте содержимое внутри элемента Border.Границы намного лучше, чем прямоугольники для такого рода работы.Установите эти свойства на границе:

  1. Фон для нужного цвета с альфа-каналом 5-10%.
  2. BorderBrush для нужного цвета.(Вы можете или не можете установить альфа-канал этого также)
  3. BorderThickness до желаемой толщины.

Запустите приложение, и вы будете примерно в вашем ОПгосударство.Теперь, чтобы добавить перетаскивание окна, захватите событие MouseDown в Window, и все, что вам нужно сделать, это вызвать DragMove ().

Вот пример приложения WPF, которое вы должны запустить:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
    x:Class="ShapedWindow.MainWindow"
    x:Name="Window"
    Title="MainWindow"
    Width="640"
    Height="480"
    WindowStyle="None"
    Background="{x:Null}"
    AllowsTransparency="True"
    MouseDown="Window_MouseDown">
<Border x:Name="LayoutRoot"
        BorderBrush="Black"
        CornerRadius="50"
        BorderThickness="2,2,3,3"
        Background="#18EF3B3B">
    <Grid>
        <Button x:Name="CloseButton"
                Content="Close"
                HorizontalAlignment="Right"
                VerticalAlignment="Top"
                Width="75"
                Margin="0,19,26,0"
                Click="CloseButton_Click" />
    </Grid>
</Border>

И код позади:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace ShapedWindow
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            this.InitializeComponent();

            // Insert code required on object creation below this point.
        }

        private void CloseButton_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void Window_MouseDown(object sender, MouseButtonEventArgs e)
        {
            DragMove();
        }
    }
}
...