我在JSON中获取数据并通过
存储在List中List<Product> rootObject = JsonConvert.DeserializeObject<List<Product>>(e.Result);
之后,我在ListBox中显示数据
productlist.ItemsSource = rootObject;
我的xaml文件: -
<ListBox Height="600" HorizontalAlignment="Left" Margin="5,91,0,0" Name="productlist" VerticalAlignment="Top" Width="441"
SelectionChanged="productlistselectionchanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="132">
<!-- <Image Source="{Binding Path=http://callme4.com/images/classifieds/ad_images/IMG_20130728_132750.jpg}" Height="73" Width="73" VerticalAlignment="Top" Margin="0,10,8,0"/> -->
<StackPanel Width="370">
<TextBlock Text="{Binding title}" Foreground="#FFC8AB14" FontSize="28" />
<TextBlock Text="{Binding city}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding realdata}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding gender}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding age}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding price}" TextWrapping="Wrap" FontSize="24" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这很好。
但我在文本块中有条件。
if ( realdata == 1)
gender and age should be display and price should be hide.
else
price should be display. and Gender with age should be hide.
请帮帮我。
答案 0 :(得分:2)
您可以使用转换器在realdata上绑定的Visibility属性。因此,您的.xaml文件应该与您在以下代码段中看起来一样:
<ListBox Height="600" HorizontalAlignment="Left" Margin="5,91,0,0" Name="productlist" VerticalAlignment="Top" Width="441"
SelectionChanged="productlistselectionchanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="132">
<!-- <Image Source="{Binding Path=http://callme4.com/images/classifieds/ad_images/IMG_20130728_132750.jpg}" Height="73" Width="73" VerticalAlignment="Top" Margin="0,10,8,0"/> -->
<StackPanel Width="370">
<TextBlock Text="{Binding title}" Foreground="#FFC8AB14" FontSize="28" />
<TextBlock Text="{Binding city}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding realdata}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding gender}" Visibility="{Binding readldata, Converter={StaticResource VisibilityConverter}}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding age}" Visibility="{Binding readldata, Converter={StaticResource VisibilityConverter}}" TextWrapping="Wrap" FontSize="24" />
<TextBlock Text="{Binding price}" Visibility="{Binding readldata, Converter={StaticResource VisibilityConverter}}" TextWrapping="Wrap" FontSize="24" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在这种情况下,您必须创建VisibilityConverter类:
public sealed class VisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int convertValue = (int)value;
if (convertValue == 1)
return Visibility.Collapsed;
else
return Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
将此类添加到app.xaml中的应用程序资源中。首先将转换器类的命名空间添加到app.xaml:
xmlns:converters="clr-namespace:MyApplicationNameSpace"
然后在您的资源中添加以下代码行:
<converters:VisibilityConverter x:Key="VisibilityConverter" />
这个解决方案不是那么短,但是当你使用MVVM模式或者只是喜欢使用数据绑定时它很有帮助。
答案 1 :(得分:0)
列出清单上的每一项并给出条件。
尝试这个..
foreach (Product currentProduct in rootObject ) // Loop through List with foreach
{
if(Product.realdata == 1) Price = "";
else {Gender =""; Age="";}
}
productlist.ItemsSource = rootObject;