Kann ein WPF ComboBox Anzeige alternativer text, wenn seine Auswahl ist null?

G ' Day!

Möchte ich meine WPF - ComboBox etwas zeigen alternativen text an, wenn Sie Ihre Daten-Auswahl gebunden ist null.

View-Modell hat den erwarteten Eigenschaften:

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
    }

    //...

}

Ansicht XAML-binding der view-Modell in der erwarteten Weise:

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

Den ComboBoxItem eingeklemmt in der Spitze ist ein Weg, um ein zusätzliches Element an der Spitze. Es ist pure chrome: view-Modell bleibt rein und einfach. Es gibt nur ein problem: die Nutzer wollen "Wählen Sie ein thingo" angezeigt, wenn die ComboBox' Selektion ist null.

Den Nutzern nicht wollen eine thingo standardmäßig ausgewählt. Sie wollen, um zu sehen, eine Nachricht, Ihnen zu sagen, Sie wählen Sie eine thingo.

Möchte ich vermeiden, verunreinigen das viewmodel mit einem ThingoWrapper Klasse mit einem ToString Methode zurückgeben "Wählen Sie eine thingo:" wenn seine .ActualThingo - Eigenschaft ist null, einwickeln jedes Thingo als ich Auffüllen Thingos, und herauszufinden, einige Weg, um zu verhindern, dass der Benutzer von der Auswahl der genullt Thingo.

Ist es ein Weg, um die Anzeige "Wählen Sie ein thingo" innerhalb der ComboBox' Grenzen der Verwendung von reinem XAML, oder reinem XAML-Code und ein paar Zeilen code in der view code-behind-Klasse?

  • FWIW: ich landete Umsetzung der ThingoWrapper, ändern der ThingoSelectionViewModel zu bewältigen, die mit der Auswahl des gewickelten null-Wert, und Wege zu finden, wählen Sie automatisch die Whatsy und Fadoozamy Objekte, so dass ich nicht haben, um wickeln Sie Sie, auch.
InformationsquelleAutor Garth Kidd | 2010-05-25
Schreibe einen Kommentar