2011-12-30 5 views
1

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

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

enter image description here

ответ

1

Для достижения этого эффекта, попробуйте следующее.

На элементе Window:

  1. Установите свойство WindowStyle в None.
  2. Установите фон на нуль.
  3. Set Позволяет прозрачность True.

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

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

Запустите приложение, и вы будете примерно в своем состоянии OP. Теперь, чтобы добавить перетаскивание окна, захватите событие MouseDown в окне, и все, что вам нужно сделать, это вызвать 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(); 
     } 
    } 
} 
Смежные вопросы