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

  • Film Riot

    Film Riot

    16 NİSAN 2006
  • isupportthegosselins

    isupporttheg

    6 Aralık 2009
  • UlyssesForever's channel

    UlyssesForev

    28 ŞUBAT 2012