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

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011