在WP7中隐藏Listbox datatemplate中的图像

时间:2011-12-26 06:37:08

标签: windows-phone-7

请帮助我,我是WP7开发的新手。我在代码页面后面有一个这样的类(.xaml.cs):

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>

所以Default是ImageList(IList)中的一个类,所以如果Default是Null,那么我必须隐藏Image,如果Default不为null,那么我必须显示该图像。我已经尝试了上面的代码,但我的应用程序崩溃了。 我收到警告,因为“.xaml页面中无法解析资源NullVisibilityConverter”。

提前致谢。

2 个答案:

答案 0 :(得分: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}}" />

答案 1 :(得分:0)

使用此:

xmlns:conv =“clr-namespace: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>