Charu
Charu

Reputation: 2749

How to Bind with a StringFormat

I have a ComboBox which I am binding to an IEnumerable<int> source.

The source has values like 12,13,14 but I want the ComboBox to display Version 12, Version 13, Version 14 etc with SelectedValue still 12, 13 and 14.

For now I am modifying the Source to add Version to it and then Binding the ComboBox to an IEnumerable.

XAML

    <ComboBox x:Name="ComboBoxVersions"  
              SelectedIndex="0" 
              SelectionChanged="ComboBoxVersions_OnSelectionChanged" 
              ItemsSource="{Binding EnvironmentVersions}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}" />
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

Upvotes: 4

Views: 2048

Answers (4)

Liero
Liero

Reputation: 27328

using ComboBox.ItemStringFormat:

<ComboBox ItemsSource="{Binding EnvironmentVersions}" 
          ItemStringFormat="version: {0}" />

or using ComboBox.ItemTemplate

<DataTemplate>
    <TextBlock Text="{Binding StringFormat=Version: {0}}" />
</DataTemplate>

or

<DataTemplate>
    <TextBlock>
        <Run Text="Version " />
        <Run Text="{Binding }"/>
    </TextBlock>
</DataTemplate>

Upvotes: 5

Marcin
Marcin

Reputation: 427

You could use something like this

 <TextBlock Text="{Binding StringFormat=Version: {0}}" />

Upvotes: 4

Cameron MacFarland
Cameron MacFarland

Reputation: 71856

You can add a string format to the binding in the datatemplate.

<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding StringFormat=Version {0}}" />
    </DataTemplate>
</ComboBox.ItemTemplate>

Upvotes: 0

helb
helb

Reputation: 7773

Here's a simple way:

<DataTemplate>
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="Version " />
        <TextBlock Text="{Binding}" />
    </StackPanel>
</DataTemplate>

Since the ItemTemplate only defines how the items are displayed, the SelectedItem property of the ComboBox still holds the original value from your collection of version numbers.

Upvotes: 2

Related Questions