Звучит так, как будто вы хотите, чтобы какой-то элемент был видимым, когда ничего не выделено, и являлся частью ComboBox, но был невидимым, когда сделан выбор.
Проще говоря, вы могли быпросто создайте UserControl, в котором был бы ваш ComboBox (если вы добавляете свои элементы в код, а не статическую разметку XAML), а также TextBlock, содержащий ваше приглашение.Например:
<Grid>
<ComboBox x:Name="ComboBoxControl"
SelectionChanged="ComboBoxControl_SelectionChanged"
HorizontalAlignment="Left" VerticalAlignment="Top"
MinWidth="{Binding ElementName=UnselectedText, Path=ActualWidth}">
<ComboBoxItem>One</ComboBoxItem>
<ComboBoxItem>Two</ComboBoxItem>
<ComboBoxItem>Three</ComboBoxItem>
</ComboBox>
<TextBlock IsHitTestVisible="False"
x:Name="UnselectedText"
HorizontalAlignment="Left"
Text="Select an option..."
VerticalAlignment="Top" Margin="4"
Padding="0,0,30,0" />
</Grid>
Затем в коде вставьте некоторую логику в обработчик событий:
Private Sub ComboBoxControl_SelectionChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs)
If ComboBoxControl.SelectedIndex = -1 Then
UnselectedText.Visibility = Windows.Visibility.Visible
Else
UnselectedText.Visibility = Windows.Visibility.Hidden
End If
End Sub
Установка свойства IsHitTestVisible="False"
DependencyProperty в TextBlock позволяет событиям мыши проходить черезтак что вы можете щелкнуть ComboBox и установить видимость на Hidden
в выделенном фрагменте кода, чтобы компоновка внешнего вида ComboBox по умолчанию не перепрыгивала, когда текст приглашения скрыт.
Естественно, всеэто также можно сделать, создав пользовательский элемент управления MyComboBox, унаследованный от ComboBox, с добавленным «UnselectedPromptProperty» в качестве свойства зависимости.Тогда логика для отображения или скрытия «UnselectedPromptProperty» будет исходить из обратного вызова проверки на DP.Это более продвинутый вариант, но он позволит вам распространять шаблоны стилей, отличные от заданных по умолчанию, в ваш элемент управления, позволяя другим изменять его.