Я использую BooleanToVisibilityConvertor для управления видимостью TextBlock в ListBox DataTemplate.Могу ли я объявить несколько конвертеров? WP8
Вот мой XAML код:
<phone:PhoneApplicationPage.Resources>
<Converters:BooleanToVisibilityConvertor x:Key="booleanToVisibilityConvertor"/>
</phone:PhoneApplicationPage.Resources>
<TextBlock Grid.Row="2" HorizontalAlignment="Right" Padding="0,0,7,0" Visibility="{Binding AverageConsumption, Converter={StaticResource booleanToVisibilityConvertor}}">
<Run Text="{Binding AverageConsumption}"/>
<Run Text="l./100 km."/>
</TextBlock>
И код позади:
public class BooleanToVisibilityConvertor : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
{
if (value != null)
{
if (!string.IsNullOrEmpty(value.ToString()))
{
return Visibility.Visible;
}
}
return Visibility.Collapsed;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Это работает правильно, но мне нужно еще один (обращенный) конвертер для другого TextBlock помещенного на том же position (Grid.Row = "2" HorizontalAlignment = "Right") со статическим текстом = «Частичная перезагрузка», поэтому, когда {Binding AverageConsumption} не является нулевым или пустым, сначала будет разрешен TextBlock, а второй будет свернут и наоборот. Что-то вроде этого:
class BooleanToVisibilityConvertorReversed : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
{
if (value != null)
{
if (!string.IsNullOrEmpty(value.ToString()))
{
return Visibility.Collapsed;
}
}
return Visibility.Visible;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Я попытался объявить другой конвертер в XAML:
<phone:PhoneApplicationPage.Resources>
<Converters:BooleanToVisibilityConvertor x:Key="booleanToVisibilityConvertor"/>
<Converters:BooleanToVisibilityConvertorReversed x:Key="booleanToVisibilityConvertorReversed"/>
</phone:PhoneApplicationPage.Resources>
Но есть исключение на InitializeComponent(): 'Первый шанс исключение типа' System.Windows. Markup.XamlParseException 'произошел в System.Windows.ni.dll' Как я могу это решить?
Почему, по вашему мнению, эта линия является преступником? – ixSci
Я думаю, что причина здесь: <Преобразователи: BooleanToVisibilityConvertorReversed x: Key = "booleanToVisibilityConvertorReversed" />, и он просто не может инициализировать страницу. Я удалил другой конвертер и попробовал только с этим, но все равно имею то же исключение. –
И если вы удалите его, ошибка исчезнет? Может быть, есть какой-то скрытый символ? Попробуйте ввести его заново с помощью справки IntelliSense. – ixSci