Devexpress kullananlar bilirler. Özellikle XAF de business class’lar yarattığımızda gerekli attribute değişikliklerini çoğunlukla Model.cs dosyasından yapmak durumunda kalırız.Ancak Model.cs dosyasını açamadığımız yada Model.cs nin kendini güncellemediğini gördüğümüz olur.
Ya da projemizi başka bi projeyle birleştirmek istiyoruz ancak Model’de yaptığımız tüm değişiklikleri teker teker bulup eklemek gerekecek. Bu da zahmetli bir iş.
Bunun için yapılması gereken oluşturulan BusinessClass içindeki property’lerin atribute’larını propertyleri yazarken vermek olucaktır.
Aşağıdaki bir sınıfımız olduğunu varsayalım.
[DefaultClassOptions]
[System.ComponentModel.DisplayNameAttribute("Bölge")]
public class KYS_Bolge
{
public KYS_Bolge(Session session) : base(session) { }
private string baslik;
[System.ComponentModel.DisplayName("Başlık")]
public string Baslik
{
get { return baslik; }
set { SetPropertyValue(“Baslik“, ref baslik, value); }
}
}
Aşağıda gördüğünüz resim CLASS’ımızın Model’deki DetailView ‘ından alınmış bir resim. ve ilgili propertyleri görebiliyorsunuz

Sizin de gördüğünüz gibi bazı propertyleri benim belirtmiş olduğum gibi Sınıf tarafından kod ile yazabiliyoruz.
örneğin kendi image dosyanıza işaret etmek istiyorsanız yeni bir png dosyası ekleyip(32×32 olmalı), adını (sadece adını , uzantısını yazmadan)
[ImageName(" resim_adi")]
şeklinde [DefaultClassOptions] ‘ın hemen altına yazdığımızda Business CLass’ıımızdaki Resim özelliğini kod ile değiştirmiş oluyoruz. aynı şekilde Caption’ımızı ayarlamak istiyorsak yani Business Class’ımızın ismini yazmak istiyorsak ve bunu kodla yapacaksak
[DefaultClassOptions] ’ın hemen altına veya Class’ımızı oluşturduğumuz class Bolge dediğimiz yerin hemen üstüne
[System.ComponentModel.DisplayName("Bölge")]
yazmamız yeterli. Bu sayede class’ımızı kullanıdğımız veya çağırdığımız her yerde bu şekilde görünecektir.

Yukarıda gördüğümüz propertilerimizin Özelliklerini gösteren bir şema. Bu şema’da
Caption , Format belirleme(regex için) ,ilgili property’mizin davranışı(düzenlenebilir olup olmaması),ImmediatePostData olup olmayışı gibi bi çok özelliğini değiştirebiliyoruz. Peki bunu kod tarafından nasıl yapıyoruz. Aşağıdaki gibi
(.cs) tarafında Property mizin üzerine geliyor ve hemen üstüne yada private ile public arasına aşağıdaki kodu yazıyoruz
[CustomAttribute] veya [Custom] da olabiliyor. Biz CustomAttribute’u kullanalım. CustomAttribute,property’nin string olarak herhangi bir özelliğini yine ilgili özelliğin değerini string olarak vererek değiştirmemizi sağlıyor.
[CustomAttribute("AllowEdit","False")] -> bunu property’mizin üstüne yazdığımızda yukarıdaki resimde gördüğümüz ilk okun gösterdiği özelliği set etmiş oluyoruz. Bu da “Düzenlenemez” olarak set edilmiş oluyor. bu ve bunun gibi diğer özellikleri de set edebiliriz.
örnek:
private string baslik;
[System.ComponentModel.DisplayName("Başlık")]
[CustomAttribute("AllowEdit","False")]
[CustomAttribute("IsPassword","True")] //Password textbox oluşmasını sağlar.* işareti gösterir.
public string Baslik
{
get { return baslik; }
set { SetPropertyValue(“Baslik“, ref baslik, value); }
}
Regexi değiştirmekte veya set etmek de aynı yoldan geçiyor. O da başka bir yazımın konusu olsun istiyorum.
(:)
İyi çalışmalar herkese.