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

  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008
  • Tracy Hairston

    Tracy Hairst

    22 Mayıs 2009
  • VideoGamePervert

    VideoGamePer

    30 AĞUSTOS 2008