2011-12-26 48 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>