Adrian
Adrian

Reputation: 20068

Set a default name to a combobox in WPF

I have a combobox filled with int's representing years. The years I have add them to an ObservableCollection, but my problem is when I load the project the combobox its blank by default. I want to set a default name to it, like "Years", but I don't want solution like set the isEditable to true, or inserting a string at the beginning. I want a pure xaml solution if it is posible.

This is my current xaml file:

<RSControls:SmoothScrollComboBox Grid.Column="1" x:Name="compilationYearCombo" Margin="7,2.04,0,2.04"                                                                                     
                            SelectedValue="{Binding Path=SelectedYear}"
                            SelectedValuePath=""
                            ItemsSource="{Binding Years}"
                            DisplayMemberPath="" SelectionChanged="compilationYearCombo_SelectionChanged" IsSynchronizedWithCurrentItem="True" Grid.ColumnSpan="2" IsEditable="False" SelectedIndex="0" IsReadOnly="False" Text="Years">

                        </RSControls:SmoothScrollComboBox>

I tried adding a <TextBlock Text="Years" /> , but that only changed all the elements in the combo to "Years".

I apreciatte a detail explenation how to this, I am just a beginner with WPF.

Thanks.

Upvotes: 2

Views: 1216

Answers (2)

yamini
yamini

Reputation: 31

To show the default text ' -- Select Value --' in Combo Box

<ComboBox Height="23" HorizontalAlignment="Left" Margin="180,18,0,0" Name="cmbExportData" VerticalAlignment="Top" Width="148" ItemsSource="{Binding}" Text="-- Select Value --" AllowDrop="False" IsEditable="True" IsManipulationEnabled="False" IsReadOnly="True" />

Upvotes: 0

Alexandre Veya
Alexandre Veya

Reputation: 95

You can add a visibility converter to your TextBlock

   <TextBlock
           Visibility="{Binding SelectedItem, ElementName=compilationYearCombo, Converter={StaticResource NullToVisibilityConverter}}"
           IsHitTestVisible="False"
           Text="Years" />

with this converter:

    public class NullToVisibilityConverter : IValueConverter
{
    #region Implementation of IValueConverter

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value == null ? Visibility.Visible : Visibility.Collapsed;
    }

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

    #endregion
}

Upvotes: 2

Related Questions