이것은 첫 번째 질문이므로 명확히하기 위해 최선을 다할 것입니다.양식 단추가 작동하지 않습니다.
WinForms에서 몇 년 만에 WPF로 시작했고, 내 인생에서 내 버튼 이벤트를 트리거 할 수 없습니다. 현재 프로젝트에있는 것은 제목 표시 줄에 대한 사용자 정의 사각형이있는 테두리가없는 창입니다.
<Window
x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:M="clr-namespace:Metro_Test"
Title="MainWindow"
Height="720"
Width="1280"
IsTabStop="False"
AllowsTransparency="True"
Background="Transparent"
BorderBrush="#FF3F3F3F"
SnapsToDevicePixels="True"
TextOptions.TextFormattingMode="Display"
TextOptions.TextRenderingMode="ClearType"
WindowStyle="None"
WindowStartupLocation="CenterScreen" AllowDrop="True" ResizeMode="CanResizeWithGrip" PreviewMouseLeftButtonDown="HandleHeaderPreviewMouseDown">
<Window.Resources>
<Style x:Key="NoChromeButton" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="Chrome" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="#ADADAD"/>
<Setter Property="Opacity" TargetName="Chrome" Value="0.5"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Border
x:Name="m_edgeBorder"
Margin="14"
Background="White">
<Border.Effect>
<DropShadowEffect
Opacity="0.999"
BlurRadius="14"
ShadowDepth="0"/>
</Border.Effect>
<Grid x:Name="MainGrid">
<Rectangle
Height="28"
Fill="Blue"
VerticalAlignment="Top"
AllowDrop="False"
MouseLeftButtonDown="HandleHeaderPreviewMouseDown"/>
<Button x:Name="CloseButton" Style="{DynamicResource NoChromeButton}" Click="HandleCloseClick" MouseEnter="HandleMouseEnter" MouseLeave="HandleMouseLeave" ClickMode="Release" HorizontalAlignment="Right" Margin="500,2,2,0" VerticalAlignment="Top" Width="24" Height="24">
<Image Source="Images\Gray\Close.png"></Image>
</Button>
<Button x:Name="MaximiseButton" Style="{DynamicResource NoChromeButton}" Click="HandleMaximiseClick" MouseEnter="HandleMouseEnter" MouseLeave="HandleMouseLeave" ClickMode="Release" HorizontalAlignment="Right" Margin="500,2,28,0" VerticalAlignment="Top" Width="24" Height="24">
<Image Source="Images\Gray\Add.png"></Image>
</Button>
<Button x:Name="MinimiseButton" Style="{DynamicResource NoChromeButton}" Click="HandleMinimiseClick" MouseEnter="HandleMouseEnter" MouseLeave="HandleMouseLeave" ClickMode="Release" HorizontalAlignment="Right" Margin="500,2,54,0" VerticalAlignment="Top" Width="24" Height="24">
<Image Source="Images\Gray\Minus.png"></Image>
</Button>
<Button x:Name="TestBtn" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="500,2,80,0" Width="24" Height="24">
<Image Source="Images\Gray\Close.png"></Image>
</Button>
</Grid>
</Border>
</Window>
그리고 "코드 숨김"코드입니다 : :이 XAML 코드는 당신이 볼 수 있듯이
는Class MainWindow
Public Sub HandleHeaderPreviewMouseDown(sender As Object, e As MouseButtonEventArgs)
If e.LeftButton = MouseButtonState.Pressed Then
Me.DragMove()
End If
End Sub
Private Sub HandleCloseClick(sender As Object, e As MouseEventArgs)
Me.Close()
End Sub
Private Sub HandleMaximiseClick(sender As Object, e As MouseEventArgs)
If Me.WindowState = Windows.WindowState.Maximized Then
Me.WindowState = Windows.WindowState.Normal
ElseIf Me.WindowState = Windows.WindowState.Normal Then
Me.WindowState = Windows.WindowState.Maximized
End If
End Sub
Private Sub HandleMinimiseClick(sender As Object, e As MouseEventArgs)
Me.WindowState = Windows.WindowState.Minimized
End Sub
Private Sub HandleMouseLeave(sender As Button, e As MouseEventArgs)
End Sub
Private Sub HandleMouseEnter(sender As Button, e As MouseEventArgs)
End Sub
End Class
, 난 여전히하는 MouseLeave 및 MouseEnter 이벤트의 모든 명령을 넣어하지 않은이 때문에 문제가 발생했습니다.
지금까지이 프로젝트에서 한 번도 내 버튼을 사용할 수 없었습니다. Window, Border 및 Grid 속성을 변경해 보았습니다. 또한 Rectangle 및 Window에서 PreviewMouseLeftButtonDown 이벤트를 제거하지 않으려 고 시도했습니다.
이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.
감사합니다. Novithchi S, 나는 그 기사를 읽고 당신이 제안한대로 빠른 검색을 수행했습니다. StackOverflow에 대한이 기사를 생각해 냈습니다. - http://stackoverflow.com/questions/3592488/dragging-a-window-in-wpf-using-dragmove-method-and-click-handler-on-the-same- but 다른 누구에게나 동일한 문제가 발생하는 경우 위의 게시물의 코드를 가장 큰 컨트롤과 함께 사용하십시오. 예를 들어 "MainGrid"입니다. – JosephGarrone