Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


WPF - CheckBox ile Form Elementlerinin Görünürlüğünün Değiştirilmesi

Yazar: Turhal Temizer

Kategori: WPF

Eklenme Tarihi: 02.11.2009 04:16:49

Bu yazımızda Windows Presentation Foundion uygulamalarında yer alan form elementlerinin görünürlüğünü checkbox.Checked özelliği ile nasıl değiştirebileceğimizi incelemeye çalışıyoruz.
Windows Presentation Foundation (WPF) ile uygulama geliştirirken karşılaştığımız farklılıklara ne tür çözümler getirebileceğimizi incelemeye devam ediyoruz.

Form üzerine yerleştirmiş olduğumuz kontrollerden bazılarını checkbox yardımı ile görünürlüğünü değiştirmek isteyebiliriz. Bu işlem sonucunda örneğin form üzerinde bir checkbox bir tane de textbox var. CheckBox 'ın seçili durumunu değiştirdiğim durumda textbox 'ın form üzerinden kaybolmasını istiyorum. Peki, bahsettiğim bu işlemi Windows Form 2.0 ile nasıl yapabiliyordum.

textbox1.Visible = checkBox1.Checked;

Yukarıda görmüş olduğunuz ufak kod parçası yazıldığında işlem kolay bir şekilde gerçekleşiyor. Peki, bu işlem WPF üzerinde nasıl yapılabiliyor. Windows Forma göre biraz daha zor. Nasıl yapabilirizi inceleyelim.

WPF uygulaması oluşturuyor ve sonrasında oluşturulan projeye sınıf ekliyoruz ve aşağıdaki kodları ekliyoruz. Bu arada WPF ile kullanabileceğimiz çok güzel bir enum bulunmaktadır. Form elementlerinin Visibility özelilkleri enum olarak tanımlanmış ve Visible, Collapsed ve Hidden değerleri atanmıştır. Bizde kodumuzda bu özelliklerden yararlanacağız.

Converter.cs
using System;
using System.Windows.Data;
using System.Windows;

namespace ShowHide.Convert
{
    class Converter:IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter,                 System.Globalization.CultureInfo culture)
        {
            Visibility vb = Visibility.Visible;
            try
            {
                var x = bool.Parse(value.ToString());
                if (x)
                    vb = Visibility.Visible;
                else
                    vb = Visibility.Collapsed;
            }
            catch (Exception)
            {}
            return vb;
        }

        public object ConvertBack(object value, Type targetType, object parameter,         System.Globalization.CultureInfo culture)
        {
            return value;
        }
    }
}

Sıra geldi XAML kod üzerinde yapacağımız işlemlere, ekranın üzerine bir tane textbox ve checkbox ekliyoruz. Sonrasında ise oluşturmuş olduğumuz sınıfı xaml:namespace olarak xaml kod tarafında gösteriyoruz.

Window1.xaml
<Window x:Class="ShowHide.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"
    xmlns:converter="clr-namespace:ShowHide.Convert" >
    <StackPanel Orientation="Vertical">
        <StackPanel.Resources>
            <converter:Converter x:Key="boolToVis"/>
        </StackPanel.Resources>
        <CheckBox Content="Tikla textbox kaybolsun" Name="checkGosterTextBox" />
        <TextBox Text="checkbox a tikladiğinda kaybolur" Visibility="{Binding Path=IsChecked,             ElementName=checkGosterTextBox, Converter={StaticResource boolToVis}}"/>
    </StackPanel>
</Window>

XAML kod da DataBinding ile oluşturulan sınıfı isim alanı olarak ekliyoruz. Sonrasında da Visibility özelliklerini buradan almasına olanak tanıyoruz.

Bu işlemler sonrasında form elementlerini istediğimiz şekilde görünebilirliği ile oynayabilyoruz. Windows Form 2.0 ile hazırlamış olduğumuz projelere oranla biraz daha zor görünse de kendi sınıfımızı oluşturduktan sonra çok rahat bir şekilde kullanabilir duruma geliyoruz.

Umarım yararlı olabilmiştir.

Turhal Temizer

info@turhaltemizer.com
http://turhal.blogspot.com
Yazar Hakkında Yorum Yok Yorum Yaz Yazara ait diğer Makaleler
Tema
Anket
ASP.NET MVC'yi Projeleriniz de kullandınız mı?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.