‫Tekrar hoş geldiniz.
‫Bu videoda, bağımlılık özellikleri hakkında konuşacağız ve veri bağlamaya başlar başlamaz
‫bunlar çok önemlidir.
‫Ve genellikle nasıl çalıştıklarını anlamak sizin için mantıklıdır.
‫Şimdi devam edelim ve ızgaramız içinde bir düğme oluşturalım.
‫Bunu da daha önce birçok kez gördüğümüz gibi düğme anahtar kelimesini oluşturarak yapıyoruz.
‫Burada, diyelim ki 100 piksellik bir yükseklik ve 200 piksellik bir genişlik atayacağım ve
‫ardından Click Me içeriğini belirleyeceğim.
‫Şimdi de arka plan denilen bir şey kullanmak istiyorum.
‫Yani arka plan adında bir özellik var ve ben bunu kesinlikle bir kanalizasyona atamak istiyorum.
‫Bu benim düğmem olacak.
‫Ve şimdi görebileceğiniz gibi, sadece testere rengi var.
‫Belki de kırmızı yapmalıyız.
‫Tamam, kırmızı.
‫Oldukça güçlü.
‫Menekşe kırmızısı.
‫Bu iyi görünüyor.
‫Yani basit bir renk.
‫Bunun arkasındaki fikir, size bağımlılık özelliklerinin ne olduğunu, nerede olduklarını ve kendi bağımlılık özelliklerinizi
‫nasıl oluşturacağınızı açıklamak istiyorum.
‫Ve bunu bir düğmeyle yapmak oldukça kolaydır, diyelim.
‫Ve bu arada, bu düğme ve aslında onu bu şekilde kapatacağım çünkü bu düğmeyi şekillendirmek istiyorum.
‫Dolayısıyla, düğme etiketleri içinde, bu düğmeye biraz daha stil eklemek istiyorum ve stil bir tetikleyici olmalıdır.
‫Bu yüzden tetiklemek istiyorum.
‫Yani düğmeler alanına girersem, rengi veya buna benzer bir şeyi değiştirmek istiyorum.
‫Bu yüzden düğme nokta stilini kullanacağım.
‫Şimdi düğme stilinin burada bir stile ihtiyacı var, bu yüzden burada kendi stilimizi oluşturabilirim ve bu stil için bir hedef
‫belirleyeceğim.
‫Hedef türü düğme olacaktır.
‫Şimdi bu yeterli değil çünkü şimdi yapmak istediğim şey bu stile bir tetikleyici eklemek.
‫Bu yüzden stil tetikleyicileri kullanacağım.
‫Bunun gibi.
‫Şimdi devam edebilir ve bir olay gerçekleştiğinde ateşlenecek güzel küçük tetikleyiciler oluşturabilirim.
‫Daha önce de olaylar gördük ama bu biraz daha farklı bir olay.
‫Bu yüzden aşağıdaki gibi kullanabileceğimiz bir tetikleyicidir.
‫Burada bir tetikleyici oluşturabiliriz ve bu tetikleyicinin bir özelliği olacaktır.
‫Ve bu, örneğin, farenin üzerindedir.
‫Yani fare bu düğmenin üzerine geldiğinde, değer true olarak ayarlanmalıdır.
‫Ve bu tetikleyicide o zaman ayarlayıcılara ihtiyacım var.
‫Peki durum buysa ne olacak?
‫Şimdi yapacağım şey, yazı tipi boyutu özelliğini 30 değerine ayarlamak olacak çünkü artık yazı tipi boyutu çok daha
‫küçük.
‫Yani burada belirli bir genişliğe, içeriğe ve genişliğe ve bu tür şeylere sahip olan bir düğmemiz
‫var.
‫Ve onu pilot yaptım ama soluk menekşe kırmızısı.
‫Ve sonra bu düğmeye bir stil ekledim.
‫Ve eklediğim bu stil aslında bir tetikleyici.
‫Böylece stil tetikleyicileri adı verilen ve stil değişikliğini tetikleyen bir
‫şey yapabilirim ve fare bu düğmenin üzerine geldiğinde tetikleyici çalıştırılır ve bu da bir şeyleri ayarlar.
‫Yani yapacağı şey, yazı tipi boyutunu burada ve şimdi belirlediğimiz değerlere ayarlamak olacaktır.
‫Burada değeri atarız.
‫True, fareyle üzerine gelindiğinde tetikleneceği anlamına gelir.
‫Ve bu, faremizin üzerine geldiğimizde veya fareyi düğmenin üzerine getirdiğimizde geçerlidir.
‫Yani bunu çalıştırırsak bazı değişiklikler görmemiz gerekir.
‫Ve bu sadece fareyle üzerine gelme işlevine sahip olmak için oldukça uzun bir yaklaşımdır, ancak burada kullanmak istediğimiz
‫çok daha fazlasıdır.
‫Gördüğünüz gibi, üzerine geliyorum ve renk bu mavimsi renge dönüşüyor.
‫Ve sonra daha büyük görünen bu metin var.
‫Böylece değer 30 olarak değişir.
‫Yani bu harika bir şey.
‫Ama neden bu kadar uzun bir koda ihtiyacımız var?
‫Mesele şu ki, burada mülkleri kullanıyoruz.
‫Gördüğünüz gibi, bu şeye özellik deniyor ve aslında genişlik bir özellik,
‫içerik bir özellik, arka plan bir özellik ve bağımlılık özelliklerine bağlılar veya bağımlılık
‫özelliklerine bağlılar ve veri bağlama için önemliler.
‫Dediğim gibi, bir sonraki videoda ya da sonraki videolardan birinde ele alacağız, ancak
‫bu tetikleyici olaya sahip olmak ya da düğmenin neler olup bittiğinin farkında olması da önemlidir.
‫Şimdi devam edelim ve ana pencere yöntemimizin içinde bir düğme oluşturalım.
‫Sadece bir düğme oluşturacağım ve şimdi sınıfın kendisini kontrol etmek istiyorum.
‫Tanıma gitmek için F 12 tuşuna basmanız yeterlidir.
‫Ve bunun yapacağı şey bana düğme sınıfını göstermek olacaktır.
‫Ve görebileceğiniz gibi, düğme tabanlıdan miras alan bir sınıftır.
‫Varsayılan özellik iptal edilir, özellik varsayılan özellik olan statik salt okunur bir bağımlılık
‫özelliği vardır.
‫Yani çok fazla değil.
‫Ancak burada aslında normal bir özellik olduğunu da görebilirsiniz.
‫Dolayısıyla, burada varsayılan iptal edildi ve varsayılan varsayıldı olarak adlandırılan
‫bir sınıf özelliğimiz var ve bunlar bu bağımlılık özelliklerine bağlı.
‫Yani veri şekillendirme, animasyon bağlama ve kalıtım gibi yöntemlerle ayarlanabilen bir
‫özelliği temsil eder.
‫Dediğim gibi, veri bağlama daha sonra ele alacağımız bir konudur.
‫Stil, bu iyi.
‫Az önce yaptığımız şey, düğmemizi şekillendirdik ve bunun için animasyon ve kalıtım kullanabiliriz.
‫Ancak şimdi düğmenin düğme tabanından miras alındığını bilmek için düğme tabanına daha derinlemesine bir göz
‫atalım.
‫Daha sonra düğme tabanı tanımına gidebilir ve kontrol edebiliriz.
‫Tamam.
‫Bu bir içerik kontrol sınıfıdır.
‫Yani düğme tabanı, içerik kontrolünden miras alınır.
‫Burada görebileceğiniz gibi, düğme tabanının köklü bir olayı vardır, bir tıklama olayı.
‫En son gördüğümüz gibi, dahil edilen olay, basılı tıklama modu, özellik
‫komutu, hedef ve benzeri gibi pek çok bağımlılık özelliğine de sahiptir.
‫Ancak bunlardan bazılarına henüz dokunmadık.
‫Ancak daha da ilginç olanı, içerik kontrolünün daha da derinlerine inersek, içeriğe sahip olduğunu
‫söyleyen bir özellik olduğunu görebiliriz.
‫Yani bu, düğmenin tüm içeriğiyle ilgileniyor.
‫Örneğin, metin düğmemizin içindeki bir metin bloğudur.
‫Yani düğmemizin içinde içerik varsa, o zaman.
‫Bu sınıf tarafından, yani bu içerik kontrol sınıfı tarafından ele alınır.
‫Ve aslında, daha da derine inebilir, tanıma gidebiliriz ve burada çok sayıda bağımlılık özelliği
‫ve iki kök olay bulacağız.
‫Ve bu kontrol sınıfı, kenarlık fırçasından ziyade dolgu özelliği adı verilen bağımlılık özelliklerine sahiptir.
‫Böylece kenarlığın rengi, ardından dikey içerik hizalaması, yatay içerik hizalaması.
‫Ve şimdi burada bu bizim için ilginç çünkü bunu kullandık.
‫Bu bir arka plan özelliğidir ve XAML dosyamızda ayarladığımız özellik de tam olarak budur.
‫Burada görebileceğiniz gibi, arka planı Soluk Menekşe Kırmızısı olarak ayarladık, böylece bu bağımlılık özelliklerine buradaki özelliklerimiz
‫aracılığıyla erişebiliriz.
‫Yani bunlar yazı tipi boyutu, yazı tipi, aile arka planı, ön plan gibi özelliklerimizdir ve kontrollerle
‫çalışırken kullandığımız tüm bu tür şeylerdir.
‫Örneğin bir düğme bir kontroldür veya bir metin bloğu da bir kontroldür.
‫Dolayısıyla, hepsi bu kontrol sınıfından miras alır ve hepsi daha sonra tetikleyen ve kuyu değişiklikleri hakkında
‫bilgi veren bu bağımlılık özelliklerine sahiptir.
‫Burada da bağımlılık özellikleriyle ilgili önemli bir şey olduğunu görüyoruz, o da her zaman statik olmaları
‫ve yalnızca okunabilmeleridir.
‫Dolayısıyla bu çok önemli.
‫Ayrıca, her zaman mülk adıyla bittiklerini de görebilirsiniz.
‫Yani burada ne zaman bir bağımlılık özelliği tanımlasak, özelliğin kendisiyle aynı adı taşıyan arka
‫plan diyoruz.
‫Örneğin burada, geçmişleri nerede, ama aynı zamanda sonunda mülk terimi de var.
‫Çok uzun bir hikaye ve çok derine indik, ancak bu size bu bağımlılık özelliklerinin ne olduğunu ve her zaman neyle
‫çalıştığımızı biraz daha gösterecektir.
‫Yani özelliklerle oynuyoruz, ama aslında bağımlılık özellikleriyle çalışıyorlar.
‫Tüm bunlara neden ihtiyacımız var?
‫Bu tetikleyicide neler olduğunu anlamak için, WPF burada bir bağımlılık özelliği kullanıyor.
‫Örneğin, this is mouse over ve is mouse over, bağımlılık özellikleri yardımıyla WPF'ye zincirleme
‫bir bildirim sağlar ve bu da değeri true olarak ayarlamamıza olanak tanır.
‫Ve ayrıca kontrol ederseniz, çünkü bu henüz dokunmadığım bir şey.
‫Aslında derleme hataları vardı, bu yüzden buradaki düğmeden kurtulmamız gerekiyor.
‫Ancak henüz ele almadığım ya da değinmediğim ve oldukça önemli olan konu şu.
‫Böylece bu tetikleyiciye sahip olduğumuzu ve özelliğin farenin fare üzerindeki değeri olduğunu görebilirsiniz.
‫Doğru.
‫Ve bu fareyle üzerine gelindiğinde tetiklenecek, doğru mu, ne yapacak?
‫Peki, yazı tipi boyutu gibi özellikleri 30 olarak ayarlayacaktır.
‫Ve size tekrar göstermeme izin verin.
‫Bak, bak.
‫Ancak şimdi düğmeyi bırakırsam, hey, geri değiştiğini ve bunun bu bağımlılık özellikleri tarafından yapıldığını görebilirsiniz.
‫Böylece neler olup bittiği hakkında bilgi veriyor ve yazı tipi boyutu değerini orijinal değerine geri ayarlayarak
‫satıyor.
‫Gördüğünüz gibi, yalnızca fare üzerindeyken doğrudur ve bu bağımlılık özellikleri aracılığıyla mümkündür.
‫Şimdi bağımlılık özellikleriyle ilgili bir başka şey, çünkü her zaman statik ve salt okunur olmaları gerektiğini söyledim
‫ve bunun nedeni tüm kontrollerin paylaşılması ve kullanılabilir olması gerektiğidir.
‫Yani bir kontrolün yalnızca bir kez kullanılabilir olmasını istemezsiniz.
‫Ayrıca diğer sınıflar ve diğer görünümler vb. için de kullanılabilir olmasını istersiniz.
‫Ve statiktir çünkü değer başlatıldıktan sonra değiştirilmemelidir.
‫Bağımlılık özelliklerinin tetiklediği bu zincirleme bildirim, veri madenciliği, animasyon, burada gördüğümüz gibi tetikleyiciler,
‫stil oluşturma ve benzeri işlemler için gereklidir.
‫Şimdi devam etmek ve kendi bağımlılık özelliğinizi oluşturmak istiyorsanız, bunu aşağıdaki şekilde yapabilirsiniz.
‫Bu yüzden bu sınıfta yeni bir özellik oluşturacağım.
‫Aslında onu arayacağım.
‫En üste koyalım.
‫Buraya kamu malı diyeceğim.
‫Ve dediğim gibi, bu bir c LR özelliği ve burada bir get ve set'e sahip olmam gerekecek, ancak bu yeterli olmayacak.
‫Bunları bir saniye içinde ayarlayacağım.
‫Bu mülküm için bir bağımlılık özelliği oluşturalım.
‫Bu yüzden bağımlılık özelliğim adında
‫public static salt okunur bir bağımlılık özelliği oluşturacağım, bağımlılık özelliği ve bu özellik dependency property dot
‫register ile hemen başlatılmalıdır.
‫Yani yeni bir bağımlılık özelliği kaydediyoruz ve birden fazla şey atamamız gerekiyor.
‫Örneğin, bir dize ismine ihtiyacımız var ve ben sadece onu çağıracağım.
‫Mülküm, o zaman mülk türüne ihtiyacımız var.
‫Peki bu mülk hangi tipte olmalıdır?
‫Ve burada gördüğümüz gibi, benim özelliğim olan özellik int türündedir.
‫Bu yüzden int türünü kullanacağım.
‫Daha sonra mülk sahibi yazmamız gerekiyor.
‫Dolayısıyla, türün sahibi ve bu mülkümün türünün sahibi ana pencere sınıfımdır çünkü ana
‫hayır sınıfındadır.
‫Yani basitçe type of'un ana pencere olacağını söylüyoruz ve şimdi özellik meta verilerini de teslim etmemiz gerekiyor.
‫Bu yüzden sıfır olacak yeni bir meta veri özelliği oluşturacağım.
‫Bu yüzden buraya sadece sıfır gireceğim, orada çok süslü bir şey yok ve hepsi bu.
‫İşte bu şekilde bir bağımlılık özelliği oluşturabiliriz.
‫Ve şimdi benim mülkümün kendisi de elbette bu bağımlılık özelliğinden etkilenmelidir.
‫Ve bunu yapmak için, get ve set'i ayarlamam gerekiyor, böylece getter get değerimizi
‫bağımlılık özelliğime döndürmelidir.
‫Ancak şimdi şöyle bir sorunumuz var: dependency özelliğinin değeri dependency özelliği türündedir
‫ve int türünde olduğunu ayarlasak bile, yine de bunu içinde olması için cast etmemiz gerekir.
‫Bu yüzden onu bir tamsayıya dönüştüreceğim ve şimdi devam edebilir ve aslında bu getter'ı kapatabiliriz, deyimi kapatabiliriz,
‫daha iyi dedi ve şimdi setter set değeri olmalıdır.
‫Ve burada bağımlılık özelliğimi verilen değere ayarladım.
‫İşte burada yaptığımız şey budur ve kendi bağımlılık mülkünüzü bu şekilde oluşturabilirsiniz.
‫Bu yüzden önemli olan statik sadece okunur.
‫Bunu bir bağımlılık özelliği türü olarak oluşturmanız gerekir.
‫Ona bir isim verebilirsiniz, sonra onu kaydettirmeniz gerekir ve ona bir isim, bir tür ve sahibinin nerede olduğunu veya sahibinin
‫ne olduğunu vermeniz gerekir.
‫Yani özelliğin oluşturulduğu sınıf ve ardından bazı ek özellik meta verileri ekleyebilmeniz için
‫bazı özellik meta verilerini teslim etmeniz gerekir.
‫Gördüğünüz gibi, dört farklı aşırı yükleme vardır ve varsayılan değer olan bir nesneyi teslim edebilirsiniz.
‫Ben de diyorum ki, tamam, varsayılan değer sıfır.
‫Dolayısıyla, burada ayarladığım özellik meta verilerim nedeniyle özelliğim varsayılan olarak sıfır olacaktır.
‫Tamamdır.
‫Yani burada bir sürü şey var.
‫Ve ne geliştireceğinize bağlı olarak, kendi bağımlılık özelliklerinizi asla oluşturmayabilirsiniz.
‫Bu nedenle, bir noktada bağımlılık özelliklerini kullanmanız gerekirse endişelenmeyin, o zaman kendi özelliklerinizi nasıl oluşturacağınızı
‫kontrol edin.
‫Aksi takdirde, burada sahip olduğumuz özellikleri kullanabilirsiniz ve bir son kullanıcı için veya sadece kullanıcı arayüzünü
‫oluşturan bir geliştirici için diyelim ve bu o kadar da alakalı olmayacaktır.
‫Ama ben sadece size işlerin nasıl yapıldığını ve burada neyin önemli olduğunu göstermek istiyorum.
‫Tamam.
‫Bir sonraki videoda görüşmek üzere.