Luke
Luke

Reputation: 23680

C# 'if' Binding value

I've got a list view that is populated by a Binding, on a class named House.

Here's an example of my code:

<DataTemplate DataType="house">
    <TextBlock Text="{Binding sold_status}" />
</DataTemplate>

As you can see, one of my variable names is sold_status. This is a bool.

I want to show either "SOLD" or "NOT SOLD" for 1 and 0 respectively.

Is it possible to fashion an if statement based on the value?

So just so that you can visualise what I want to achieve:

<DataTemplate DataType="house">
    <TextBlock Text="({Binding sold_status} == 1) 'SOLD' else 'NOT SOLD'" />
</DataTemplate>

Upvotes: 3

Views: 1339

Answers (5)

Sergei B.
Sergei B.

Reputation: 3227

I suggest you to use a DataTrigger. It's quite simple and doesn't require separate converter.

<DataTemplate DataType="house">
    <TextBlock x:Name="Status" Text="SOLD" />
    <DataTemplate.Triggers>
         <DataTrigger Binding="{sold_status}" Value="False">
              <Setter TargetName="Status" Property="Text" Value="NOT SOLD"/>
         </DataTrigger>

    </DataTemplate.Triggers>
</DataTemplate>

Upvotes: 0

Wayne Tanner
Wayne Tanner

Reputation: 1356

Look up the IValueConverter interface for an example. Implement the Convert method to return the text you want to display.

Upvotes: 2

Purplegoldfish
Purplegoldfish

Reputation: 5284

A better approach to this would be to use a converter. Keep the binding as you have done in your first example then have the converter return a string with "Sold" if true etc.

Upvotes: 0

Mike
Mike

Reputation: 773

You want to use a value converter.

Upvotes: 0

Kieren Johnstone
Kieren Johnstone

Reputation: 41993

You'll want to create a Style with DataTriggers in to set the properties as needed. You could also use a converter, but changing UI control properties based on underlying data is exactly what triggers/styles are all about.

..In fact, I can see you're basically 'converting' sold_status to a bit of text. For that, use a converter. I'll post a quick example..

See the top answer here: WPF: Display a bool value as "Yes" / "No" - it has an example converter class you could repurpose.

Upvotes: 5

Related Questions