En iyi yanıtlayıcılar
Wpf Hakkında

Soru
-
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.
- Düzenleyen Cihan YakarMVP 3 Mart 2017 Cuma 07:19
- Yanıt Olarak İşaretleyen Faysal YİĞİT 3 Mart 2017 Cuma 07:53
-
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.
- Yanıt Olarak İşaretleyen Faysal YİĞİT 3 Mart 2017 Cuma 07:51
-
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...
- Düzenleyen Cihan YakarMVP 3 Mart 2017 Cuma 10:18
- Yanıt Olarak İşaretleyen Faysal YİĞİT 5 Mart 2017 Pazar 12:00
-
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.
- Düzenleyen A.M. Sabuncu 3 Mart 2017 Cuma 12:02
- Yanıt Olarak İşaretleyen Faysal YİĞİT 5 Mart 2017 Pazar 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
- Düzenleyen A.M. Sabuncu 5 Mart 2017 Pazar 15:39
- Yanıt Olarak İşaretleyen Faysal YİĞİT 5 Mart 2017 Pazar 16:47
-
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.
- Yanıt Olarak İşaretleyen Faysal YİĞİT 5 Mart 2017 Pazar 16:47
- Düzenleyen A.M. Sabuncu 5 Mart 2017 Pazar 17:01
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?
- Düzenleyen Cihan YakarMVP 2 Mart 2017 Perşembe 08:29
-
-
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
-
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
----------
-
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.
- Düzenleyen Cihan YakarMVP 3 Mart 2017 Cuma 07:19
- Yanıt Olarak İşaretleyen Faysal YİĞİT 3 Mart 2017 Cuma 07:53
-
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.
-
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
-
-
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.
- Yanıt Olarak İşaretleyen Faysal YİĞİT 3 Mart 2017 Cuma 07:51
-
-
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.
- Düzenleyen Cihan YakarMVP 3 Mart 2017 Cuma 08:24
-
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/
-
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.
-
-
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...
- Düzenleyen Cihan YakarMVP 3 Mart 2017 Cuma 10:18
- Yanıt Olarak İşaretleyen Faysal YİĞİT 5 Mart 2017 Pazar 12:00
-
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. :)
- Düzenleyen Cihan YakarMVP 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.
- Düzenleyen A.M. Sabuncu 3 Mart 2017 Cuma 12:02
- Yanıt Olarak İşaretleyen Faysal YİĞİT 5 Mart 2017 Pazar 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
- Düzenleyen A.M. Sabuncu 5 Mart 2017 Pazar 15:39
- Yanıt Olarak İşaretleyen Faysal YİĞİT 5 Mart 2017 Pazar 16:47
-
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.
-
-
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.
- Yanıt Olarak İşaretleyen Faysal YİĞİT 5 Mart 2017 Pazar 16:47
- Düzenleyen A.M. Sabuncu 5 Mart 2017 Pazar 17:01
-
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
- Düzenleyen Cihan YakarMVP 5 Mart 2017 Pazar 16:55
-
-
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.
-
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 -
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.