我有一个填充了代表年份的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的初学者。
感谢。
答案 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" />