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

  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • Google Chrome

    Google Chrom

    1 EYLÜL 2008
  • ThisWeekYT

    ThisWeekYT

    14 Mart 2013