2011-12-26 49 views
0

请帮助我,我是新来的WP7 development.I有这样一类代码隐藏页(.xaml.cs):隐藏在列表框中的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的)类,所以,如果默认为空的话,我不得不隐藏图像,如果默认不为空的话,我必须表明图像。我试过上面的代码,但我的应用程序崩溃。 我在.xaml页面中收到警告,因为“资源NullVisibilityConverter无法解析”。

在此先感谢。

回答

1

您需要在页面资源中创建如下值转换器的实例。注意,使用的xmlns的,你的C#命名空间映射到一个XML命名空间:

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

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

现在引用它,如下所示,注意上面定义的CONV前缀:

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

感谢可啉您的回复。但我收到警告作为“资源”转换:VisibilityConverter“无法解决”。 – 2011-12-26 07:12:20

+0

好点,固定它。查看更新后的答案。 – ColinE 2011-12-26 16:48:10

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>