Press ESC to close

Xamarin Forms Converter

Merhaba arkadaşlar. Bu yazımda Xamarin.Forms ile nasıl converter oluşturulur bundan bahsedeceğim. İlk olarak converter nedir diye soracak olursanız; converter bir değeri duruma göre farklı bir değere dönüştürmek olarak düşünebilirsiniz. Örnek verecek olursak grid ile üst üse 2’den fazla view koydunuz. Bu viewlerden sadece birinin görünmesini istiyorsanız diğerleri için Converter yazmalısınız. Viewlerin visibilitysi false olurken diğeri için bir converter ile  true yapılmalıdır.

Bunun için bir sınıf oluşturuyoruz. Bu sınıfın bir converter olabilmesi için IValueConverter sınıfından kalıtım alması gerekiyor. Kalıtım aldıktan sonra 2 adet fonksiyonunu sınıfa dahil etmeliyiz. Bu fonskyionlar Convert ve ConvertBack fonksiyonlarıdır. Convert fonksiyonu ilk bind edildiği zaman çalışır. Convert Back metodu ise eğer bind edilen item binding two way ise o zaman çalışır.

Be vereceğim örnekte null olan değeri false yapacağım. Böylelikle LisView kullandığım zaman uygulamanın hata vermesini engelleyeceğim. Convert fonksiyonun ilk parametresi gelen değerdir. Bu değeri kontrol ederek işlemlerime devam ediyorum. Kısa bir if else ile değeri kontrol edip, null ise false değilse gelen diğeri geri döndürüyorum.

public class NullToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value == null ? false : value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Tabi ki sadece bu kadarla kalmıyoruz. Bunu bind edeceğimiz kontrole de söylememiz gerekiyor. Tabi ki ondan önce de xaml tarafta converterımın yerini belirtmeliyim. Converter klasörünü belirttikten sonra bunu bind ettiğimiz kontrole converter olarak veriyoruz. Aslında bu kadar basit. Breakpoint kullanarak adım adım kontrol edebilirsiniz.

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:local="clr-namespace:XamConverter" 
             x:Class="XamConverter.MainPage"
             xmlns:converter="clr-namespace:XamConverter.Converters"
             BackgroundColor="Gray">
    <ContentPage.Resources>
        <ResourceDictionary>
            <converter:NullToVisibilityConverter x:Key="nullToVisibilityConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>
    <StackLayout VerticalOptions="CenterAndExpand"
                 Padding="40">
        
        <Entry Text="{Binding Name}"/>
        
        <Button Text="Enter"
                IsVisible="{Binding Name, Converter={StaticResource nullToVisibilityConverter}}"/>
    </StackLayout>
</ContentPage>

Sorularınız olursa yorum veya mail atarak ulaşabilirsiniz. İyi çalışmalar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir