В WPF, когда пользователь нажимает кнопку Minimize
, я хочу, чтобы состояние окна оставалось нормальным. При нажатии ничего не произошло. Но я не хочу отключать кнопку Minimize
, кнопка Minimize
включена и видна, просто ничего не делает при нажатии.
Как мне это сделать?
Переопределить кнопку свертывания в WPF
comment
Почему вы хотите это сделать? Вы задали вопрос две минуты назад и были отмечены как повторяющиеся...
- person Denis Schaf   schedule 12.03.2019
comment
может это поможет? Аналогично с минимизацией: stackoverflow. ком/вопросы/3001525/
- person Denis Wasilew   schedule 12.03.2019
comment
Возможный дубликат Есть можно ли изменить событие кнопки "Свернуть" окна WPF?
- person hessam hedieh   schedule 12.03.2019
comment
@DenisSchaf Я нахожу новый способ решить свою проблему. Предыдущий вопрос не такой
- person Luan Pham   schedule 12.03.2019
comment
Возможный дубликат события Window StateChanging в WPF
- person Rekshino   schedule 12.03.2019
Ответы (2)
Это слегка измененная форма этого ответа, которую я будем рассматривать как не дубликат из-за ненужного изменения размера:
using System.Windows.Interop;
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.SourceInitialized += new EventHandler(OnSourceInitialized);
}
private void OnSourceInitialized(object sender, EventArgs e)
{
HwndSource source = (HwndSource)PresentationSource.FromVisual(this);
source.AddHook(new HwndSourceHook(HandleMessages));
}
private IntPtr HandleMessages(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
// 0x0112 == WM_SYSCOMMAND, 'Window' command message.
// 0xF020 == SC_MINIMIZE, command to minimize the window.
if (msg == 0x0112 && ((int)wParam & 0xFFF0) == 0xF020)
{
// Cancel the minimize.
handled = true;
}
return IntPtr.Zero;
}
}
person
Mark Feldman
schedule
12.03.2019
Вы можете добиться этого в событии StateChanged. В XAML:
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
StateChanged="Window_StateChanged">
В коде:
private void Window_StateChanged(object sender, EventArgs e)
{
if (this.WindowState == WindowState.Minimized)
this.WindowState = WindowState.Normal;
}
person
Mathivanan KP
schedule
12.03.2019
Я пробовал это решение, но мое приложение мерцает, я не знаю, как объяснить, ищу другое решение. Спасибо за вашу помощь!
- person Luan Pham; 12.03.2019