2011-12-26 3 views
0

Пожалуйста, помогите мне, я новичок в WP7 development.I есть класс, как это в коде позади страницы (.xaml.cs):Скрытие изображения в Listbox DataTemplate в WP7

public class NullVisibilityConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      return value == null ? Visibility.Collapsed : Visibility.Visible; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      Visibility? v = value as Visibility?; 
      return ((v.HasValue) || (v.Value == Visibility.Collapsed)) ? null : ""; 
     } 
    } 

У меня есть. XAML файл выглядит так:

<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" x:Name="lstImages" HorizontalAlignment="Center" ItemsSource="ImageList" Padding="0" Margin="0" BorderThickness="0" > 
             <ListBox.ItemTemplate> 
              <DataTemplate> 
<Image x:Name="imgSe" Visibility="{Binding Default, Converter={StaticResource NullVisibilityConverter}}" Height="50" Source="../Assets/g1.png"></Image> 
</DataTemplate> 
             </ListBox.ItemTemplate> 
            </ListBox> 

Так по умолчанию класс в ImageList (IList), Так что, если по умолчанию Null, то я должен скрыть изображение, и если по умолчанию не равно нулю, то я должен показать, что изображение. Я попробовал вышеуказанный код, но мое приложение рушится. Я получаю предупреждение, поскольку «ресурс NullVisibilityConverter не может быть разрешен» на .xaml странице.

Заранее спасибо.

ответ

1

Вам необходимо создать экземпляр вашего конвертера значений в ресурсах вашей страницы следующим образом. Обратите внимание, что использование Xmlns, которая отображает ваши C# пространства имен в пространство имен XML:

<phone:PhoneApplicationPage 
    xmlns:conv="clr-namespace:ConverterNamespace" 
    ... 
    > 

    <phone:PhoneApplicationPage.Resources> 
     <conv:NullVisibilityConverter x:Key="VisibilityConverter"/> 
    </phone:PhoneApplicationPage.Resources> 
    ... 
</phone:PhoneApplicationPage> 

Теперь ссылаться на него как следует, обратите внимание на префикс сопу определено выше:

<Image x:Name="imgSe" Visibility="{Binding Default, Converter={StaticResource VisibilityConverter}}" /> 
+0

Спасибо Coline за ответ. Но я получаю предупреждение, поскольку «ресурс» conv: VisibilityConverter «не может быть разрешен». –

+0

Хорошая точка, исправлена. См. Обновленный ответ. – ColinE

0

Используйте это:

XMLNS: конв = "CLR-имен: Пространство имен класса NullVisibilityConverter"

затем добавить, как показано ниже:

<phone:PhoneApplicationPage.Resources> 
     <conv:NullVisibilityConverter x:Key="VisibilityConverter"/> 
    </phone:PhoneApplicationPage.Resources> 

Тогда тег изображения:

<Image x:Name="imgSe" Visibility="{Binding Default, Converter={StaticResource VisibilityConverter}}" Height="50" Source="../Assets/se.png"></Image> 
Смежные вопросы