SORU
24 HAZİRAN 2009, ÇARŞAMBA


Nasıl WPF ters boolean özelliklerini bağlamak için?

Başlığı ile, her türlü öneriye açığım. Gerçekten çok kötü.

Ne var IsReadOnly bir özelliği olan bir nesnedir. Eğer bu özellik true ise, bir Düğme IsEnabled özelliği, ( örneğin ), false yapmak istiyorum.

Bu kadar kolay IsEnabled="{Binding Path=!IsReadOnly}" yap ben inanmak istiyorum ama WPF ile uçmaz.

Stil tüm ayarları ile gitmek zorunda saplanıp kaldım? Sadece bir şey için başka bir bool bool ters bir ayar kadar basit fazla uzun görünüyor.

<Button.Style>
    <Style TargetType="{x:Type Button}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=IsReadOnly}" Value="True">
                <Setter Property="IsEnabled" Value="False" />
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=IsReadOnly}" Value="False">
                <Setter Property="IsEnabled" Value="True" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Button.Style>

CEVAP
24 HAZİRAN 2009, ÇARŞAMBA


Sana bool bir özellik ters çevirir bir ValueConverter kullanabilirsiniz.

XAML:

IsEnabled="{Binding Path=IsReadOnly, Converter={StaticResource InverseBooleanConverter}}"

Dönüştürücü:

[ValueConversion(typeof(bool), typeof(bool))]
    public class InverseBooleanConverter: IValueConverter
    {
        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter,
            System.Globalization.CultureInfo culture)
        {
            if (targetType != typeof(bool))
                throw new InvalidOperationException("The target must be a boolean");

            return !(bool)value;
        }

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

        #endregion
    }

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MofoHifi Records

    MofoHifi Rec

    15 HAZİRAN 2006
  • PremiumBeat.com - Royalty Free Music

    PremiumBeat.

    16 Kasım 2008
  • TomSka

    TomSka

    30 Mayıs 2006