I have found it useful to enble or disable WPF elements based on if they are null or not. This is not supported out of the box so I need a simple value converter. The simple value converter has been updated to support all things that has a Count property.
public class NullToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null) return false;
PropertyInfo propertyInfo = value.GetType().GetProperty("Count");
if (propertyInfo != null)
{
int count = (int) propertyInfo.GetValue(value, null);
return count > 0;
}
if (!(value is bool || value is bool?)) return true;
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
The simple value converter above allows me to disable any element with the following syntax in XAML.
<local:NullToBooleanConverter x:Key="nullToBooleanConverter"/>
<Button IsEnabled="{Binding Path=Owned, Converter={StaticResource nullToBooleanConverter}}" Content="Tapir"/>
The converter can of course be used for any other property taking a boolean argument.
No comments:
Post a Comment