在WPF中为组合框设置默认名称

时间:2011-08-26 08:47:36

标签: c# wpf xaml

我有一个填充了代表年份的int的组合框。多年来我将它们添加到ObservableCollection中,但我的问题是当我将组合框加载到默认情况下的空白组合框时。我想为它设置一个默认名称,比如“Years”,但是我不希望像将isEditable设置为true或者在开头插入一个字符串这样的解决方案。如果它是可行的,我想要一个纯xaml解决方案。

这是我当前的xaml文件:

<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>

我尝试添加<TextBlock Text="Years" />,但只将组合中的所有元素都更改为“年”。<​​/ p>

我想详细说明如何做到这一点,我只是WPF的初学者。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以将可见性转换器添加到TextBlock

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

使用此转换器:

    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
}

答案 1 :(得分:0)

在组合框中显示默认文本' - 选择值 - '

<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" />