Как отобразить текст по умолчанию “- Избранную Команду -” в поле комбинированного списка на pageload в WPF?

Я полагаю, что.a файл является архивом, который может содержать несколько объектных файлов.

96
задан stema 29 April 2013 в 13:55
поделиться

5 ответов

Не лучшая практика .. но работает нормально ...

<ComboBox GotFocus="Focused"  x:Name="combobox1" HorizontalAlignment="Left" Margin="8,29,0,0" VerticalAlignment="Top" Width="128" Height="117"/>

Код за

public partial class MainWindow : Window
{
    bool clearonce = true;
    bool fillonce = true;
    public MainWindow()
    {
        this.InitializeComponent();          
        combobox1.Items.Insert(0, " -- Select Team --");
        combobox1.SelectedIndex = 0;
    }

    private void Focused(object sender, RoutedEventArgs e)
    {
            if(clearonce)
            {
                combobox1.Items.Clear();
                clearonce = false;
            }
            if (fillonce)
            {
              //fill the combobox items here 
                for (int i = 0; i < 10; i++)
                {
                    combobox1.Items.Insert(i, i);
                }
                fillonce = false;
            }           
    }
}
0
ответ дан 24 November 2019 в 05:32
поделиться

Не пробовал с полями со списком, но у меня это сработало с другими элементами управления ...

ageektrapped blogpost

Здесь он использует слой украшения для отображения водяного знака.

4
ответ дан 24 November 2019 в 05:32
поделиться

Я не знаю, поддерживается ли это напрямую, но вы можете наложить на комбо метку и сделать его скрытым, если выделение не равно нулю.

например.

<Grid>
   <ComboBox Text="Test" Height="23" SelectionChanged="comboBox1_SelectionChanged" Name="comboBox1" VerticalAlignment="Top" ItemsSource="{Binding Source=ABCD}"  />
   <TextBlock IsHitTestVisible="False" Margin="10,5,0,0" Name="txtSelectTeam" Foreground="Gray" Text="Select Team ..."></TextBlock>
</Grid>

Затем в обработчик выбора изменен ...

private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    txtSelectTeam.Visibility = comboBox1.SelectedItem == null ? Visibility.Visible : Visibility.Hidden;
}
15
ответ дан 24 November 2019 в 05:32
поделиться
[

]Установите IsEditable="True" на элементе ComboBox. Это отобразит свойство Text в ComboBox.[

].
22
ответ дан 24 November 2019 в 05:32
поделиться

Вы можете сделать это без какого-либо кода, с использованием IValueConverter .

<Grid>
   <ComboBox
       x:Name="comboBox1"
       ItemsSource="{Binding MyItemSource}"  />
   <TextBlock
       Visibility="{Binding SelectedItem, ElementName=comboBox1, Converter={StaticResource NullToVisibilityConverter}}"
       IsHitTestVisible="False"
       Text="... Select Team ..." />
</Grid>

Здесь у вас есть класс конвертера, который вы можете использовать повторно.

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
}

И, наконец, вам нужно объявить ваш конвертер в разделе ресурсов.

<Converters:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />

Где Конвертеры - это место, где вы разместили класс конвертера. Пример:

xmlns:Converters="clr-namespace:MyProject.Resources.Converters"

Очень хорошая вещь в этом подходе - это отсутствие повторения кода в вашем коде.

87
ответ дан 24 November 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: