none
Wpf Hakkında RRS feed

  • Soru

  • Merhaba arkadaşlar. Ben WPF kullanarak tasarladığım bir formu Windows forms app içerisinde nasıl kullanırım. yada şöyle Windows form da bi panel içerisine WPF ile tasarladığım bir controlleri eklemek istiyorum.
    2 Mart 2017 Perşembe 08:11

Yanıtlar

  • Biraz açıklarmısın cihan hocam neden uyum sorunu ve performans sorunu yaşıyorum.?

    Ben görselliği artırmak için kullanmak istedim daha özgür bir platform gibi geldi bana.Sen tavsiye etmezmisin.

    Ben WPF varken Windows Forms'u tavsiye etmiyorum.

    Winforms içinde WPF kullanmayı daha da tavsiye etmiyorum. Çünkü aslında yapmak istediğin uygulama içinde uygulama açmak gibi bir şey. Winforms GDI+ ile ekrana çizilirken WPF DirectX kullanılarak doğrudan çiziliyor. Aslında tamamen uyumsuzlar. Ya otur baştan WPF ile güzelce yaz ya da Winforms ile devam et derim ben. Aksi halde şöyle hata veriyor, biri büyük biri küçük çıkıyor, formu taşırken sıkıntı oluyor, multithread yaptım şöyle oldu böyle oldu... gibi sorularla yine sen uğraşacaksın.


    3 Mart 2017 Cuma 07:19
  • Teşekkür ederim fırat hocam sıfırdan WPF diyoruz ozaman.

    Bu WPF forumlarda sadece tasarım tarafı XAML değilmi. Bizim Class yapısını aynen kullanıyoruz o tarafta sıkıntı yok değilmi.

    Aynen öyle. Şimdiden kolay gelsin. XAML çok karşına çıkacak ileride. Tüm Windows 10 development süreci XAML. (Desktop/Tablet, Mobile, XBOX, IoT vs.) Büyük bir kazanım olacağını düşünüyorum.
    3 Mart 2017 Cuma 07:49
  • XAML olmadan nasıl tasarım yapacaksın peki WPF nedir ozaman anlamadım ben ya.

    C# tasarımını XAML ile birleştirilmiş şey değilmi WPF

    Hayır.

    C# ile anladığın yanlış.

    Mümkün olduğunca kısaltmaya çalışacağım:

    C# bir programlama dili. Yani mantık,işlemler, oop gibi konular için kullanılır. Bir programlama dilinin arayüzü yoktur. Sonradan yazılmış arayüz kütüphaneleri vardır.

    Bir pencere, bir düğme çizmek istediğinde bunu ekrana zirilyon adet yolla çizdirebilirsin. Windows bunu kolaylaştırmak için GDI+ arayüzünü (api) sunar. C# kullanarak bu api'ı yöneten yine c# ile yazılmış bir Windows Forms kütüphanesi var. Ve yine bu kütüphane için görsel tasarım yapmanı sağlayan visual studio diye bir araç var. Sen forma düğme sürüklediğinde arkada new Button() diye kod yazıyor. Button un içinde olduğu Winforms kütüphanesi de işletim sistemine Button çizmesi için istekte bulunuyor.... Bunlar daha önce senin işini kolayştırmak için başkaları tarafından yazılmış. 

    Wpf olunca aynı şeyin son adımları değişiyor artık GDI'a değil ekran kartı ile doğrudan erişimi olan Direct-X api ile iletişim kuruluyor. Winfors yerine WPF kütüphanesi geliyor. Sen xaml da <Button>  yazdığında senin için new Button() yazılıyor  ve o da WPF kütüphanesi ile directx e komut gönderiyor... 




    3 Mart 2017 Cuma 10:16
  • XAML olmadan nasıl tasarım yapacaksın peki WPF nedir ozaman anlamadım ben ya.

    Şöyle düşün: WinForms'da da, hiç Designer kullanmadan uygulama yazılabilir, sadece kod ile.  Designer sonuçta kod üretiyor.  Eğer sen üşenmezsen üretilen aynı kodu elle de yazabilirsin.

    Aynı şekilde XAML'sız WPF kodu da yazılabilir.  Tüm kontrollar runtime esnasında anında dinamik olarak yaratılabilir ("on-the-fly").  Örneğin WinForms'da:

    TextBox tb = new TextBox();

    kodu, metin kutusu kontrolünü Designer kullanmadan yaratmış oluyor.  Tabii bu kontrolun Form'un neresinde olması gerektiği (X, Y), boyutları (Width, Height) ve diğer bir çok özelliği tek tek, kod içinde elle ayarlanmak zorunda.  Designer bunları arka planda programcıya hissettirmeden yapıyor.  Form.Designer.cs dosyasını açıp incelersen yararlı olur.

    Hiç Designer kullanmadan yapılan projelerin bir güzel yanı, Visual Studio'yu hiç açmadan, sadece csc.exe komutu ile derlenebilmeleridir.  StackOverflow'da moderatör olan Marc Gravell isimli kullanıcın verdiği kod örnekleri hep böyledir, her zaman sorunsuz olarak build edilir.



    3 Mart 2017 Cuma 12:00
  • Mükafatı tasarımdaki esneklik, hız, görsellik değilmi.

    Birşey daha sorabilirmiyim. WPF formun üst kısmına erişme tasarlama şansımız varmı. Formun adının close fullscreen gibi butonların olduğu kısıma.

    O kısmın rengini yüksekliğini değiştirmek istiyorum.

    Maalesef o kısıma .NET ile müdahale edilemiyor.  Win32 API'sı kullanmak gerekiyor.  Oldukça karışık.  Hep zor sorular soruyorsun. :)

    Win32 API'larını kullanan ve çalışan, açıklayıcı bir proje: https://wpfwindow.codeplex.com/

    EK:

    Ben de yeni öğrendim: .NET 4.5 ile artık o bölgeye ulaşmak mümkün.  WindowChrome sınıfını kullanacaksın: https://msdn.microsoft.com/en-us/library/system.windows.shell.windowchrome(v=vs.110).aspx


    5 Mart 2017 Pazar 14:24
  • WPF'deki bir window'un bileşen isimleri şöyle:

    Header dediğin yere Title Bar deniyor.  Ayrıca müdahale edilebilen orta kısım Client Area olduğu için, diğer her yere Non-Client Area deniyor.  Non-Client Area (bir diğer ismi Chrome) genelde Win32 denetiminde, ama dediğim gibi, yeni WindowChrome sınıfı ile de buraya müdahale edilebiliyor.

     


    5 Mart 2017 Pazar 16:41

Tüm Yanıtlar

  • Yaparsın da iyi bir şey değil. Uyum ve performans kayıpları yaşarsın.

    Neden sadece WPF kullanmıyorsun?


    2 Mart 2017 Perşembe 08:28
  • Biraz açıklarmısın cihan hocam neden uyum sorunu ve performans sorunu yaşıyorum.?

    Ben görselliği artırmak için kullanmak istedim daha özgür bir platform gibi geldi bana.Sen tavsiye etmezmisin.

    2 Mart 2017 Perşembe 20:28
  • Merhaba,

    Şahsen denemediğim için şu linkteki yöntemi denemeni isteyeceğim. Deneyip bildirir misin?

    https://weblogs.asp.net/jdanforth/open-a-wpf-window-from-winforms

    3 Mart 2017 Cuma 06:35
  • Sürekli uzun uzun hata veriyor 

    7 Error veriyor.

    ----------------

    Error The type name 'IComponentConnector' could not be found in the namespace 'System.Windows.Markup'. This type has been forwarded to assembly 'System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' Consider adding a reference to that assembly. WindowsFormsApplication52 c:\users\faysal yiğit\documents\visual studio 2015\Projects\WindowsFormsApplication52\WindowsFormsApplication52\obj\Debug\UserControl1.g.cs 41

    ---------------

    Error 'IComponentConnector' in explicit interface declaration is not an interface WindowsFormsApplication52 c:\users\faysal yiğit\documents\visual studio 2015\Projects\WindowsFormsApplication52\WindowsFormsApplication52\obj\Debug\UserControl1.g.cs 78

    -------------

    Error The type name 'IComponentConnector' could not be found in the namespace 'System.Windows.Markup'. This type has been forwarded to assembly 'System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' Consider adding a reference to that assembly. WindowsFormsApplication52 c:\users\faysal yiğit\documents\visual studio 2015\Projects\WindowsFormsApplication52\WindowsFormsApplication52\obj\Debug\UserControl1.g.cs 78

    --------------

    Error The type 'UserControl' does not support direct content. WindowsFormsApplication52 c:\users\faysal yiğit\documents\visual studio 2015\Projects\WindowsFormsApplication52\WindowsFormsApplication52\UserControl1.xaml 8

    ---------------

    Error CS0538 'IComponentConnector' in explicit interface declaration is not an interface WindowsFormsApplication52 c:\users\faysal yiğit\documents\visual studio 2015\Projects\WindowsFormsApplication52\WindowsFormsApplication52\obj\Debug\UserControl1.g.i.cs 78

    ---------------

    Error CS1069 The type name 'IComponentConnector' could not be found in the namespace 'System.Windows.Markup'. This type has been forwarded to assembly 'System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' Consider adding a reference to that assembly. WindowsFormsApplication52 c:\users\faysal yiğit\documents\visual studio 2015\Projects\WindowsFormsApplication52\WindowsFormsApplication52\obj\Debug\UserControl1.g.i.cs 41

    ---------------

    Error CS1069 The type name 'IComponentConnector' could not be found in the namespace 'System.Windows.Markup'. This type has been forwarded to assembly 'System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' Consider adding a reference to that assembly. WindowsFormsApplication52 c:\users\faysal yiğit\documents\visual studio 2015\Projects\WindowsFormsApplication52\WindowsFormsApplication52\obj\Debug\UserControl1.g.i.cs 78

    ----------

    3 Mart 2017 Cuma 07:06
  • Biraz açıklarmısın cihan hocam neden uyum sorunu ve performans sorunu yaşıyorum.?

    Ben görselliği artırmak için kullanmak istedim daha özgür bir platform gibi geldi bana.Sen tavsiye etmezmisin.

    Ben WPF varken Windows Forms'u tavsiye etmiyorum.

    Winforms içinde WPF kullanmayı daha da tavsiye etmiyorum. Çünkü aslında yapmak istediğin uygulama içinde uygulama açmak gibi bir şey. Winforms GDI+ ile ekrana çizilirken WPF DirectX kullanılarak doğrudan çiziliyor. Aslında tamamen uyumsuzlar. Ya otur baştan WPF ile güzelce yaz ya da Winforms ile devam et derim ben. Aksi halde şöyle hata veriyor, biri büyük biri küçük çıkıyor, formu taşırken sıkıntı oluyor, multithread yaptım şöyle oldu böyle oldu... gibi sorularla yine sen uğraşacaksın.


    3 Mart 2017 Cuma 07:19
  • Biraz açıklarmısın cihan hocam neden uyum sorunu ve performans sorunu yaşıyorum.?

    Ben görselliği artırmak için kullanmak istedim daha özgür bir platform gibi geldi bana.Sen tavsiye etmezmisin.

    Ben WPF varken Windows Forms'u tavsiye etmiyorum.

    Winforms içinde WPF kullanmayı daha da tavsiye etmiyorum. Çünkü aslında yapmak istediğin uygulama içinde uygulama açmak gibi bir şey. Winforms GDI+ ile ekrana çizilirken WPF DirectX kullanılarak doğrudan çiziliyor. Aslında tamamen uyumsuzlar. Ya otur baştan WPF ile güzelce yaz ya da Winforms ile devam et derim ben. Aksi halde şöyle hata veriyor, biri büyük biri küçük çıkıyor, formu taşırken sıkıntı oluyor, multithread yaptım şöyle oldu böyle oldu... gibi sorularla yine sen uğraşacaksın.


    Katılıyorum, yeni projeler yapacağın zaman seçimin WPF olsun.

    En büyük sebeplerinden bir tanesi yarın UWP, Xamarin vs. kullanmak istersen XAML kullanacaksın. XAML öğrenmek için de çok güzel bir yol.

    Aldığın hatalara gelirsek, namespace eksikliğinden bahsediyor. Eksik olanları bir reference kısmında aratıp ekle, öyle dene.

    3 Mart 2017 Cuma 07:26
  • Biraz açıklarmısın cihan hocam neden uyum sorunu ve performans sorunu yaşıyorum.?

    Ben görselliği artırmak için kullanmak istedim daha özgür bir platform gibi geldi bana.Sen tavsiye etmezmisin.

    Ben WPF varken Windows Forms'u tavsiye etmiyorum.

    Winforms içinde WPF kullanmayı daha da tavsiye etmiyorum. Çünkü aslında yapmak istediğin uygulama içinde uygulama açmak gibi bir şey. Winforms GDI+ ile ekrana çizilirken WPF DirectX kullanılarak doğrudan çiziliyor. Aslında tamamen uyumsuzlar. Ya otur baştan WPF ile güzelce yaz ya da Winforms ile devam et derim ben. Aksi halde şöyle hata veriyor, biri büyük biri küçük çıkıyor, formu taşırken sıkıntı oluyor, multithread yaptım şöyle oldu böyle oldu... gibi sorularla yine sen uğraşacaksın.


    Anladım cihan hocam. Ben WPF'i toptan sildin sandım. Karma bi proje sıkıntı olur diyorsun. 

    Ozaman saf WPF'e devam


    3 Mart 2017 Cuma 07:38
  • Teşekkür ederim fırat hocam sıfırdan WPF diyoruz ozaman.

    Bu WPF forumlarda sadece tasarım tarafı XAML değilmi. Bizim Class yapısını aynen kullanıyoruz o tarafta sıkıntı yok değilmi.

    3 Mart 2017 Cuma 07:46
  • Teşekkür ederim fırat hocam sıfırdan WPF diyoruz ozaman.

    Bu WPF forumlarda sadece tasarım tarafı XAML değilmi. Bizim Class yapısını aynen kullanıyoruz o tarafta sıkıntı yok değilmi.

    Aynen öyle. Şimdiden kolay gelsin. XAML çok karşına çıkacak ileride. Tüm Windows 10 development süreci XAML. (Desktop/Tablet, Mobile, XBOX, IoT vs.) Büyük bir kazanım olacağını düşünüyorum.
    3 Mart 2017 Cuma 07:49
  • Evet hocam android XML gibi bişey yapı çok benziyor biraz zorlarsak çözeriz sanırım.

    Teşekkür ettim katkınız için fırat hocam, cihan hocam.

    3 Mart 2017 Cuma 07:53
  • WPF ile XAML çok başka şeyler sakın karıştırmayın. Sadece bir birileri ile kullanıyorlar. XAML sadece html bir gibi bir markup dili, onu yorumlayana bağlı olarak yetenekleri değişir. Hiç XAML kullanmadan WPF uygulaması yazabilirsiniz. 


    3 Mart 2017 Cuma 08:23
  • WPF ile XAML çok başka şeyler sakın karıştırmayın. Sadece bir birileri ile kullanıyorlar. XAML sadece html bir gibi bir markup dili, onu yorumlayana bağlı olarak yetenekleri değişir. Hiç XAML kullanmadan WPF uygulaması yazabilirsiniz. 


    Hayır, XAML sadece WPF için kullanılmıyor. Windows 10 ürün ailesinden herhangi bir cihaza kod yazamayı (C#, VB.NET vs.) düşünüyorsan yolun XAML'dan geçiyor.

    Hatta Silverlight da öyle.

    https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/

    3 Mart 2017 Cuma 08:40
  • WPF ile XAML çok başka şeyler sakın karıştırmayın. Sadece bir birileri ile kullanıyorlar. XAML sadece html bir gibi bir markup dili, onu yorumlayana bağlı olarak yetenekleri değişir. Hiç XAML kullanmadan WPF uygulaması yazabilirsiniz. 


    Hayır, XAML sadece WPF için kullanılmıyor. Windows 10 ürün ailesinden herhangi bir cihaza kod yazamayı (C#, VB.NET vs.) düşünüyorsan yolun XAML'dan geçiyor.

    Hatta Silverlight da öyle.

    https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/

    Hayır? aynı şeyi söylüyoruz neden hayır? :)

    Xaml Xamarin de de kullanıyor. İstersen kendi projende de kullanabilirsin. Xaml dan html çıkartanlarda var. 

    3 Mart 2017 Cuma 09:01
  • XAML olmadan nasıl tasarım yapacaksın peki WPF nedir ozaman anlamadım ben ya.

    C# tasarımını XAML ile birleştirilmiş şey değilmi WPF

    3 Mart 2017 Cuma 09:05
  • XAML olmadan nasıl tasarım yapacaksın peki WPF nedir ozaman anlamadım ben ya.

    C# tasarımını XAML ile birleştirilmiş şey değilmi WPF

    Hayır.

    C# ile anladığın yanlış.

    Mümkün olduğunca kısaltmaya çalışacağım:

    C# bir programlama dili. Yani mantık,işlemler, oop gibi konular için kullanılır. Bir programlama dilinin arayüzü yoktur. Sonradan yazılmış arayüz kütüphaneleri vardır.

    Bir pencere, bir düğme çizmek istediğinde bunu ekrana zirilyon adet yolla çizdirebilirsin. Windows bunu kolaylaştırmak için GDI+ arayüzünü (api) sunar. C# kullanarak bu api'ı yöneten yine c# ile yazılmış bir Windows Forms kütüphanesi var. Ve yine bu kütüphane için görsel tasarım yapmanı sağlayan visual studio diye bir araç var. Sen forma düğme sürüklediğinde arkada new Button() diye kod yazıyor. Button un içinde olduğu Winforms kütüphanesi de işletim sistemine Button çizmesi için istekte bulunuyor.... Bunlar daha önce senin işini kolayştırmak için başkaları tarafından yazılmış. 

    Wpf olunca aynı şeyin son adımları değişiyor artık GDI'a değil ekran kartı ile doğrudan erişimi olan Direct-X api ile iletişim kuruluyor. Winfors yerine WPF kütüphanesi geliyor. Sen xaml da <Button>  yazdığında senin için new Button() yazılıyor  ve o da WPF kütüphanesi ile directx e komut gönderiyor... 




    3 Mart 2017 Cuma 10:16
  • WPF ile XAML çok başka şeyler sakın karıştırmayın. Sadece bir birileri ile kullanıyorlar. XAML sadece html bir gibi bir markup dili, onu yorumlayana bağlı olarak yetenekleri değişir. Hiç XAML kullanmadan WPF uygulaması yazabilirsiniz. 


    Hayır, XAML sadece WPF için kullanılmıyor. Windows 10 ürün ailesinden herhangi bir cihaza kod yazamayı (C#, VB.NET vs.) düşünüyorsan yolun XAML'dan geçiyor.

    Hatta Silverlight da öyle.

    https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/

    Hayır? aynı şeyi söylüyoruz neden hayır? :)

    Xaml Xamarin de de kullanıyor. İstersen kendi projende de kullanabilirsin. Xaml dan html çıkartanlarda var. 

    Sadece birbirleri ile kullanılıyor derken başka platformlarda yok gibi anladım, pardon. :)
    3 Mart 2017 Cuma 10:21

  • Sadece birbirleri ile kullanılıyor derken başka platformlarda yok gibi anladım, pardon. :)
    Tekrar okuyunca gerçekten öyle bir anlam çıkıyor. Hızlı yazmanın getirdiği sıkıntılar.
    3 Mart 2017 Cuma 10:26
  • XAML olmadan nasıl tasarım yapacaksın peki WPF nedir ozaman anlamadım ben ya.

    Şöyle düşün: WinForms'da da, hiç Designer kullanmadan uygulama yazılabilir, sadece kod ile.  Designer sonuçta kod üretiyor.  Eğer sen üşenmezsen üretilen aynı kodu elle de yazabilirsin.

    Aynı şekilde XAML'sız WPF kodu da yazılabilir.  Tüm kontrollar runtime esnasında anında dinamik olarak yaratılabilir ("on-the-fly").  Örneğin WinForms'da:

    TextBox tb = new TextBox();

    kodu, metin kutusu kontrolünü Designer kullanmadan yaratmış oluyor.  Tabii bu kontrolun Form'un neresinde olması gerektiği (X, Y), boyutları (Width, Height) ve diğer bir çok özelliği tek tek, kod içinde elle ayarlanmak zorunda.  Designer bunları arka planda programcıya hissettirmeden yapıyor.  Form.Designer.cs dosyasını açıp incelersen yararlı olur.

    Hiç Designer kullanmadan yapılan projelerin bir güzel yanı, Visual Studio'yu hiç açmadan, sadece csc.exe komutu ile derlenebilmeleridir.  StackOverflow'da moderatör olan Marc Gravell isimli kullanıcın verdiği kod örnekleri hep böyledir, her zaman sorunsuz olarak build edilir.



    3 Mart 2017 Cuma 12:00
  • Yani WPF dediğimizde Direct-X ile çalışan kütüphaneleri kullanarak form tasarlayabildiğimiz sistem demek. Winform da GDI kütüpanelerini kullanıyoruz.

    Ok Cihan Hocam Teşekür ettim sanırım anlaşıldı.

    5 Mart 2017 Pazar 11:41
  • Bu WPF biraz farklı winforms a göre. Winforms da daha kolaydı herşey sanki. İnceledikçe çözülecek ama.

    Teşekkkür ettim ahmet hocam.

    5 Mart 2017 Pazar 12:00
  • Winforms da daha kolaydı herşey sanki. İnceledikçe çözülecek ama.


    Korkutmak için söylemiyorum - WPF oldukça zorlayıcı bir teknoloji ama mükafatı da ona göre çok daha fazla.
    5 Mart 2017 Pazar 12:22
  • Mükafatı tasarımdaki esneklik, hız, görsellik değilmi.

    Birşey daha sorabilirmiyim. WPF formun üst kısmına erişme tasarlama şansımız varmı. Formun adının close fullscreen gibi butonların olduğu kısıma.

    O kısmın rengini yüksekliğini değiştirmek istiyorum.

    5 Mart 2017 Pazar 12:44
  • Canın ne isterse yaparsın. Hayal gücünün bittiği yere kadar. İstersen 3d form yap ileri düğmesine basınca kübün diğer yüzeyine dönsün. İstersen disko topu gibi ışıklar saçsın. WPF de sınır yok.
    5 Mart 2017 Pazar 12:47
  • Şu üst kısma bi ulaşsam döndürecem disko topu gibi ama bi ulaşsam :)
    5 Mart 2017 Pazar 12:53
  • Mükafatı tasarımdaki esneklik, hız, görsellik değilmi.

    Birşey daha sorabilirmiyim. WPF formun üst kısmına erişme tasarlama şansımız varmı. Formun adının close fullscreen gibi butonların olduğu kısıma.

    O kısmın rengini yüksekliğini değiştirmek istiyorum.

    Maalesef o kısıma .NET ile müdahale edilemiyor.  Win32 API'sı kullanmak gerekiyor.  Oldukça karışık.  Hep zor sorular soruyorsun. :)

    Win32 API'larını kullanan ve çalışan, açıklayıcı bir proje: https://wpfwindow.codeplex.com/

    EK:

    Ben de yeni öğrendim: .NET 4.5 ile artık o bölgeye ulaşmak mümkün.  WindowChrome sınıfını kullanacaksın: https://msdn.microsoft.com/en-us/library/system.windows.shell.windowchrome(v=vs.110).aspx


    5 Mart 2017 Pazar 14:24
  • Boyumdan büyük işlere kalkışıyorum :) kafamda sorular varken rahat uyuyamıyorum:)

    https://wpfwindow.codeplex.com/ paylaşımını inceledim yöntem hakkında bilgi veriyor ama https://msdn.microsoft.com/en-us/library/system.windows.shell.windowchrome(v=vs.110).aspx paylaşımını daha fazla incelemem lazım.

    Teşekkür ederim ahmet hocam.

    5 Mart 2017 Pazar 16:27
  • Ben winformda headeri kapatıp üst kısma bir panel koyup onu kendim tasarlıyordum çok daha güzel oluyordu :) burdada o yolu deneyebilirim aslında
    5 Mart 2017 Pazar 16:29
  • WPF'deki bir window'un bileşen isimleri şöyle:

    Header dediğin yere Title Bar deniyor.  Ayrıca müdahale edilebilen orta kısım Client Area olduğu için, diğer her yere Non-Client Area deniyor.  Non-Client Area (bir diğer ismi Chrome) genelde Win32 denetiminde, ama dediğim gibi, yeni WindowChrome sınıfı ile de buraya müdahale edilebiliyor.

     


    5 Mart 2017 Pazar 16:41
  • Mükafatı tasarımdaki esneklik, hız, görsellik değilmi.

    Birşey daha sorabilirmiyim. WPF formun üst kısmına erişme tasarlama şansımız varmı. Formun adının close fullscreen gibi butonların olduğu kısıma.

    O kısmın rengini yüksekliğini değiştirmek istiyorum.

    Maalesef o kısıma .NET ile müdahale edilemiyor.  Win32 API'sı kullanmak gerekiyor.  Oldukça karışık.  Hep zor sorular soruyorsun. :)

    Win32 API'larını kullanan ve çalışan, açıklayıcı bir proje: https://wpfwindow.codeplex.com/

    EK:

    Ben de yeni öğrendim: .NET 4.5 ile artık o bölgeye ulaşmak mümkün.  WindowChrome sınıfını kullanacaksın: https://msdn.microsoft.com/en-us/library/system.windows.shell.windowchrome(v=vs.110).aspx


    WindowChrome işin en düzgün çözüm (bizde onu kullanıyoruz) yolu ama ona da gerek yok, bir tane rectangle ya da her ne istiyorsan yukarı at düğmeleri koy üstüne sonra taşıyıcı elementin mousedown eventine Window.DragMove()  methodunu çağır. Oldu bitti.. Yani pencere çubuğu üste değil altta, yanda, ortada bile olabilir. Çok istersen çaprazda olur. 

    5 Mart 2017 Pazar 16:54
  • xaml da System.Windows.Shell.WindowChrome sınıfı nasıl kullanılıyor ki aceba
    5 Mart 2017 Pazar 17:00
  • Yalnız çubuk üstte değil de başka yerde olacaksa, iki rectangle gerekmeyecek mi? Biri TitleBar'ı saklamak için, diğeri de çubuk uygulaması.  Ayrıca saklayacak olan rectangle'ın üst-sağ-sol kenarlarının alttaki kenarlar ile aynı olması gerekmez mi? Daha önce bu şekilde hiç yapmadığım için soruyorum.
    5 Mart 2017 Pazar 17:05
  • xaml da System.Windows.Shell.WindowChrome sınıfı nasıl kullanılıyor ki aceba

    Şu cevaptaki kodlara bak istersen: http://stackoverflow.com/a/15419156/360840
    5 Mart 2017 Pazar 17:09
  • Yalnız çubuk üstte değil de başka yerde olacaksa, iki rectangle gerekmeyecek mi? Biri TitleBar'ı saklamak için, diğeri de çubuk uygulaması.  Ayrıca saklayacak olan rectangle'ın üst-sağ-sol kenarlarının alttaki kenarlar ile aynı olması gerekmez mi? Daha önce bu şekilde hiç yapmadığım için soruyorum.
    Borderless Window yapıp titlebar'ın özelliklerini sen kodlayacaksın. Ama bu kodlama winforms'daki kadar zor değil. Sadece eventlere birer satırlık kodlar yazıyorsun. Rectangle olmaz elipse olur, beşgen olur vs. 
    5 Mart 2017 Pazar 19:58