请帮助我,我是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”。
提前致谢。
答案 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>