Rehber C# WPF ile Titlebar rengi değiştirme

Normalde bu kod WinForm için çalışanının rehberini yapmıştım.
Bugün de WPF ve güncel halini paylaşacağım sizlere.

Öncelike bu kod DWM API, yani Masaüstü Pencere Yöneticisini kullanan güzel bir kod.

Öncelikle kodumuzu çağırmamız için gerekli kütüphaneyi entegre ediyoruz:

C#:
using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;

Ardından DLL'i entegre etmemiz için gerekli kodumuzu giriyoruz:

C#:
[DllImport("DwmApi")]
public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, int[] attrValue, int attrSize);

Sırada renderlama işlemi var:

C#:
private void MainWindow_SourceInitialized(object sender, EventArgs e){
    try{
        if (DwmSetWindowAttribute(new System.Windows.Interop.WindowInteropHelper(this).Handle, 19, new[]{ 1 }, 4) != 0){
            DwmSetWindowAttribute(new System.Windows.Interop.WindowInteropHelper(this).Handle, 20, new[]{ 1 }, 4);
        }
    }catch (Exception){ }
}

Şimdi sırada WPF çalışma mantığı farklı olduğu için program çalıştırıldığı anda kodun devreye girmesini sağlıyoruz:

C#:
public MainWindow(){
    InitializeComponent();
    SourceInitialized += MainWindow_SourceInitialized;
}

Sonuç:

1716031878474.png


İyi kullanımlar.
 
Normalde bu kod WinForm için çalışanının rehberini yapmıştım.
Bugün de WPF ve güncel halini paylaşacağım sizlere.

Öncelike bu kod DWM API, yani Masaüstü Pencere Yöneticisini kullanan güzel bir kod.

Öncelikle kodumuzu çağırmamız için gerekli kütüphaneyi entegre ediyoruz:

C#:
using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;

Ardından DLL'i entegre etmemiz için gerekli kodumuzu giriyoruz:

C#:
[DllImport("DwmApi")]
public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, int[] attrValue, int attrSize);

Sırada renderlama işlemi var:

C#:
private void MainWindow_SourceInitialized(object sender, EventArgs e){
    try{
        if (DwmSetWindowAttribute(new System.Windows.Interop.WindowInteropHelper(this).Handle, 19, new[]{ 1 }, 4) != 0){
            DwmSetWindowAttribute(new System.Windows.Interop.WindowInteropHelper(this).Handle, 20, new[]{ 1 }, 4);
        }
    }catch (Exception){ }
}

Şimdi sırada WPF çalışma mantığı farklı olduğu için program çalıştırıldığı anda kodun devreye girmesini sağlıyoruz:

C#:
public MainWindow(){
    InitializeComponent();
    SourceInitialized += MainWindow_SourceInitialized;
}

Sonuç:

Eki Görüntüle 2198507

İyi kullanımlar.
Biraz fazla basit şeyler gösteriyormuşsunuz gibi değil mi?
Yanlış anlamayın ama database kirliliği gibi ayrıca daha komplike şeyler atsanız daha güzel olur örneğin
Bulamadığım için vazgeçmiştim:
Titlebara minimize maximize ve exit butonları haricinde bir nesne eklemek özelleştirmek gibi hiçbiryer anlatmıyor eğer biliyorsan çok iyi olur. (NOT: Kendi titlebarımızı yapmak harici)
Ben kendi titlebarımı yaptım ama windows'un kendi title barında sabitleme vb. gibi özellikler ve modernlik olduğu için daha avantajlı olur onun üzerinde geliştirme yapmak.
 

Yeni konular

Geri
Yukarı