Silverlight – WPF Kendi oluşturduğumuz Brush’a kodla ulaşmak

Expression Blend’de oluşturduğumuz brushların yanındaki kutucuğa tıklayarak Convert to New Source dersek oluşturduğumuz Brushları bir anlamda template haline getiririz ve başka yerlerde kullanma imkanımız olur.Ben de bu şekilde kullanmak istedim ama bir sıkıntıyla karşılaştım. Oluşturduğum brush’a isim verdiğim halde bir türlü ulaşamıyordum. Nette yaptığım araştırmalar sonucunda aşağıdaki gibi bir çözümle problem halloldu.

rectange.Fill = (Brush)FindResource(“olusturdugum_brush_ismi”);

Böylece oluşturduğum brush’ı istediğim yerde kullanabiliyorum.

System.Windows.Controls.Grid does not contain a public definition for GetEnumerator hatası

WPF foreachle grid içerisindeki kontrollere ulaşmak isterken  foreach statement can not operate on variables of type ‘System.Windows.Controls.Grid’ because ‘System.Windows.Controls.Grid’ does not contain a public definition for ‘GetEnumerator’ hatasıyla karşılaştım. Yazdığım kod aşağıdaki gibiydi.

foreach (StackPanel stackpanel in grid_stackpanels)
{
foreach (Rectangle rect in stack.Children)
{
………………………

}
}

Normal bir masaüstü projesinde kontrollere erişmek için  foreach (……….in Controls) diyince sıkıntısız çalışıyordu. Bende grid içerisinde de böyle arayacağımızı düşünmüştüm ancak böyle değilmiş. Gridin children’ları arasında gezinmek gerekiyormuş. Yani kod aşağıdaki şekilde olmalı.

foreach (StackPanel stackpanel in grid_stackpanels.Children)
{
foreach (Rectangle rect in stack.Children)
{
………………………

}
}

Burda dikkat edilmesi gereken bir nokta daha var. İlk döngü gridin içerisindeki tüm kontrollerin hepsinin StackPanel, ikincisinde ise StackPanellerin içerisinde sadece Rectangle’lar olması gerekiyor. Böyle olmaması durumunda yani aranan kontrollerin dışında farklı bir kontrol varsa kodumuz aşağıdakine benzer bir hata verecektir.

Unable to cast object of type ‘System.Windows.Shapes.Rectangle’ to type ‘System.Windows.Controls.StackPanel’.

Bu hatayı önlemek için foreach döngüsünü kullandığımız yerde aradığımız kontrol dışında farklı bir kontrol olmadığına emin olmalıyız. Çünkü o kontrolleri aradığımız kontrole cast etmeye çalışacak bu da hataya sebep olacaktır.

Korkuyor

İnsanların çoğu kaybetmekten korktuğu için, sevmekten korkuyor.
Sevilmekten korkuyor, kendisini sevilmeye layık görmediği için.
Düşünmekten korkuyor, sorumluluk getireceği için.
Konuşmaktan korkuyor, eleştirilmekten korktuğu için.
Duygularını ifade etmekten korkuyor, reddedilmekten korktuğu için.
Yaşlanmaktan korkuyor, gençliğinin kıymetini bilmediği için.
Unutulmaktan korkuyor, dünyaya iyi birşey vermediği için.
Ölmekten korkuyor, aslında yaşamayı bilmediği için.
Ve yaşamaktan korkuyor, kendisi için değil, başkalarına göre yaşadığı için.

William Shakespeare

Visual Studio – silverlight kontrolleri toolboxta görünmüyor hatası

Silverlight tarafında çalışırken ekstra kontrollere ihtiyacım oldu.Dll’lerini ekleyerek toolboxta görünmesini istiyordum. Studio’u kurcalarken Silverlight kontrollerinin tamamı yokoldu. (: Xaml’a eklenecek hiç bir silverlight kontrolü görünmüyordu. Visual Studio’u aç kapa, bilgisayarı restart et klasik yöntemleri denedikten sonra Silverlight Tools’u tekrar yükledim ama nafile. Hemen nette araştırmalara başladım. Aşağıdaki komutu komut istemcisine yazıp çalıştırdığımda problem halloldu.

devenv /setup

Peki bu komut ne yapıyor. Şöyle ki, Visual Studio’nun menü, toolbar vs..  registry’lerini ayarlayarak problemleri hallediyor. Sanırım Studio’yla alakalı farklı problemlerde de bu komutu kullanabiliriz. Sorunları çözerken farklı sorunlara sebep oluyor mu acaba ?

Windows 7: bootmgr is missing hatası ve çözümü

Arkadaşlarımdan biri kırılmış bir program yükledikten sonra, bilgisayarı yeniden başlattığında bu hatayla karşılaşmış. Bilgisayar açıldığında bu hatayı veriyor ve işletim sistemi açılamadan öylece kalıyor. Bootmgr dosyası işletim sisteminin boot edilmesi için gerekli bir dosya ve bahsettiğim program bu dosyayı silmiş. Hal böyle olunca bilgisayar açılamıyor tabi. Çözümü zor değil. Öncelikle elimizde Windows 7 cd’si olması gerekiyor. Bilgisayarımıza takıp bilgisayarımızı dvd’den boot ediyoruz. Bilindiği üzere Windows 7 kurulumu başlamadan önce dil seçenekleri geliyor. Buradan dili seçtikten sonra aşağıdaki ekran gelecek. bootmgrismissingBuradan Command Prompt’u seçip komut sistemine

bootrec / fixboot

yazıp enter’lıyoruz. Başarıyla tamamlandığını bildiren bir mesaj almamız lazım. Bu komut hasarlı olan boot dosyalarını onarıyor. Bilgisayarımızı yeniden başlattığımızda sorunun hallolması ve bilgisayarımızın sorunsuz olarak başlamış olması gerekiyor.

‘System.Data.Linq.DataContext’ is defined in an assembly that is not referenced Hatası ve Çözümü

Visual Studio üzerinde Linqle çalışırken bu hatayı aldım. Linq kütüphanesini projeye eklememe rağmen bu hatayla karşılaşmak enteresan geldi. Yaptığım araştırma sonucunda anladımki proje web.config dosyası içerine linq’in referansını eklememiş. Aşağıdaki şekilde web.config içerisine assembly eklenince problem halloldu.

<compilation debug=”true”>
<assemblies>
<add assembly=”System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ />

The project system components are not installed on this computer. Please re-install Visual Studio HATASI ve ÇÖZÜMÜ

Visual Studio 2008 üzerine DevExpress komponentleri yüklemiştim bugün. Daha sonra projelerimden birini açtığımda ‘The project system components are not installed on this computer. Please re-install Visual Studio‘ hatasıyla karşılaştım ve projem yüklenemedi. Bunca işin arasında Studio’yu yeniden kurmak cabası olacaktı. Neyseki internette yaptığım araştırmalar sonucunda problemi hallettim. Başlat > Çalıştır, komut istemcisi ve

devenv / ResetSkipPkgs

komutu sorunu halletti. Bu komutla birlikte Studio’muz kurulduğu zamanki ayarlarına döndü ve sorun kalmadı.