0

JSONでデータを取得し、リストに保存しています

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 Name="price" Text="{Binding price}" TextWrapping="Wrap" FontSize="24" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

私のリストボックスは正常に動作しています。

しかし今、私は価格テキストブロックに例のような条件を持っています:-

if(price > 2000)
 textblock values should be purchased.
else
 textblock values should be "not purchased"

しかし、私はそれについて混乱しています、どうすればいいですか?

専門家によるチェックをお願いします

4

2 に答える 2

0

値コンバーターを使用します。ここでいくつかのサンプルを参照してください

コンバーター クラスを作成する

public class PurchaseStatusConverter : IValueConverter
{
    private const double comparePrice = 2000;

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        double price;

        if (double.TryParse(value.ToString(), out price))
        {
            return price > comparePrice ? "Purchased" : "Not Purchased";
        }

        return "-";
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

app.xaml で、コンバーターを定義し、名前空間を処理します。re-sharper がインストールされている場合は、これを処理する必要があります。

   <Application.Resources >
    <ResourceDictionary>
        <converter:PurchaseStatusConverter xmlns:converter="clr-namespace:namespacetoyourtype" x:Key="PurchaseStatusConverter" />
    <ResourceDictionary>
</Application.Resources >

最後に、テキストボックスでコンバーターを参照します。

<TextBlock Name="price" Text="{Binding price, Converter={StaticResource PurchaseStatusConverter}}" TextWrapping="Wrap" FontSize="24" />
于 2013-09-03T11:23:18.083 に答える
0
/// <summary>
/// Returns a collapsed visibility when the price is less than or equal to the comparison price. 
/// </summary>
public class PriceToVisibilityConverter : IValueConverter
{
    private const double comparePrice = 2000;

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        double price;

        if (double.TryParse(value.ToString(), out price))
        {
            return price > comparePrice ? Visibility.Visible : Visibility.Collapsed;
        }

        return Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

app.xaml で

<Application.Resources >
    <ResourceDictionary>
        <converter:PurchaseStatusConverter xmlns:converter="clr-namespace:namespacetoyourtype" x:Key="PurchaseStatusConverter" />
        <converter:PriceToVisibilityConverter xmlns:converter="clr-namespace:namespacetoyourtype" x:Key="PriceToVisibilityConverter" />
    <ResourceDictionary>
</Application.Resources >

あなたのxamlで

<TextBlock Name="price" Vis Text="Some text" Visibility="{Binding Price, Converter={StaticResource PriceToVisibilityConverter}}" TextWrapping="Wrap" FontSize="24" />
于 2013-09-03T11:57:43.363 に答える