SORU
10 ŞUBAT 2009, Salı


Nasıl BooleanToVisibilityConverter ters muyum?

WPF bir BooleanToVisibilityConverter bir boolean bir kontrol Görünürlük özelliğini bağlamak için kullanıyorum. Bu gayet iyi çalışıyor, ama denetimlerinin eğer boolean true ise gizlemek ister, ve eğer yanlış olsaydı gösterirdim.

Bu mümkün mü?

Teşekkürler Andy

CEVAP
3 Mart 2011, PERŞEMBE


Eviren yerine Boolean bir değere dönüştürebilirsiniz IValueConverter genel bir uygulama kullanarak aynı amacı elde edebilirsinizyapılandırılabilirdoğru ve yanlış, hedef değerler. Aşağıda böyle bir uygulama:

public class BooleanConverter<T> : IValueConverter
{
    public BooleanConverter(T trueValue, T falseValue)
    {
        True = trueValue;
        False = falseValue;
    }

    public T True { get; set; }
    public T False { get; set; }

    public virtual object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value is bool && ((bool) value) ? True : False;
    }

    public virtual object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value is T && EqualityComparer<T>.Default.Equals((T) value, True);
    }
}

Sonraki, T Visibility bulunduğu alt:

public sealed class BooleanToVisibilityConverter : BooleanConverter<Visibility>
{
    public BooleanToVisibilityConverter() : 
        base(Visibility.Visible, Visibility.Collapsed) {}
}

Son olarak, bu BooleanToVisibilityConverter yukarıdaki XAML kullanmak ve, örneğin, yanlış doğru Collapsed Visible kullanmak için yapılandırabilirsiniz.

<Application.Resources>
    <app:BooleanToVisibilityConverter 
        x:Key="BooleanToVisibilityConverter" 
        True="Collapsed" 
        False="Visible" />
</Application.Resources>

Bu " ters IsVisible karşı bir Boolean özelliği IsHidden adlı bağlamak istediğinizde kullanışlıdır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bogdan Gabriel

    Bogdan Gabri

    5 Aralık 2006
  • Malwarebytes

    Malwarebytes

    22 Temmuz 2007
  • TheScorpioTechno

    TheScorpioTe

    15 Aralık 2010