Buongiorno!Un ComboBox WPF può visualizzare testo alternativo quando la sua selezione è nulla?
Desidero che il mio WPF ComboBox
visualizzi del testo alternativo quando la sua selezione con associazione ai dati è null
.
Il modello vista ha le proprietà attese:
public ThingoSelectionViewModel : INotifyPropertyChanged {
public ThingoSelectionViewModel(IProvideThingos) {
this.Thingos = IProvideThingos.GetThingos();
}
public ObservableCollection<Thingo> Thingos { get; set; }
public Thingo SelectedThingo {
get { return this.selectedThingo; }
set { // set this.selectedThingo and raise the property change notification
}
// ...
}
La vista è vincolante XAML al modello vista nel modo atteso:
<ComboBox x:Name="ComboboxDrive" SelectedItem="{Binding Path=SelectedThingo}"
IsEditable="false" HorizontalAlignment="Left" MinWidth="100"
IsReadOnly="false" Style="{StaticResource ComboboxStyle}"
Grid.Column="1" Grid.Row="1" Margin="5" SelectedIndex="0">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem IsEnabled="False">Select a thingo</ComboBoxItem>
<CollectionContainer
Collection="{Binding Source={StaticResource Thingos}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
Il ComboBoxItem
incuneato nella parte superiore è un modo per ottenere un oggetto in più nella parte superiore. È puro al cromo: il modello di vista rimane puro e semplice. C'è solo un problema: gli utenti vogliono "Seleziona una cosa" visualizzato ogni volta che la selezione del ComboBox è nullo.
Gli utenti fanno non vogliono un oggetto selezionato per impostazione predefinita. Vogliono vedere un messaggio che dice loro di selezionare un thingo.
vorrei evitare di dover inquinare il ViewModel con una classe ThingoWrapper
con un metodo ToString
ritorno "Seleziona una thingo" se la sua proprietà .ActualThingo
è nullo, avvolgendo ogni Thingo
come Io popolo Thingos
, e capire un modo per impedire all'utente di selezionare il valore annullato Thingo
.
C'è un modo per visualizzare "Seleziona una cosa" entro i limiti di ComboBox
utilizzando XAML puro o XAML puro e alcune righe di codice nella classe code-behind della vista?
FWIW: Ho finito per attuare il ThingoWrapper, modificando il ThingoSelectionViewModel per far fronte selezione del valore nullo avvolto, e trovare il modo di selezionare automaticamente gli oggetti Whatsy e Fadoozamy quindi non ho dovuto avvolgerli, anche. –