2010-03-03 7 views
1

Je voudrais avoir une liste déroulante avec des options de villes à choisir, l'une de l'option est une option vide (pas de ville). La source d'articles est liée à la liste des objets "Ville". La liste contient une valeur nulle pour représenter une option vide. SelectedItem est lié à une propriété de type "City". Tout fonctionne sauf la situation lorsque l'option vide est sélectionnée dans la liste déroulante. La propriété liée à SelectedItem n'est pas mise à jour avec la valeur null mais conserve la sélection précédente. Comment pourrais-je résoudre cela?Combobox avec une valeur null - SelectedItem liaison

merci pour asnwer Greg

Répondre

0

Ce n'est pas mon expérience. Je le XAML suivant:

<TextBlock Text="{Binding ElementName=_cbx, Path=SelectedItem}" Margin="20" /> 
<ComboBox x:Name="_cbx" ItemsSource="{Binding Cities}" HorizontalAlignment="Left" SelectionChanged="OnNewCity" /> 

J'ai créé un propriétés appelées villes dans le code-behind comme liste et rempli avec des valeurs qui sont des chaînes et des valeurs nulles. Lorsque null est sélectionné, SelectedItem est un ComboBoxItem.

Dans le OnNewCity, je remplis une autre zone de texte basée sur SelectedItem et je vois le même comportement.

Pourriez-vous donner plus d'informations sur votre code XAML et votre code?

Modifier après le commentaire de l'auteur:

Merci pour le XAML. J'ai utilisé le même, avec une classe City au lieu d'une liste de chaînes et j'ai le même comportement que vous. Un point d'arrêt dans SelectedCity montre que le setter n'est pas appelé. Lorsque l'objet City est null, la propriété SelectedItem est de type ComboBoxItem et donc je suppose que WPF recherche une propriété SelectedCity d'un type compatible avec ComboBoxItem afin d'appeler le setter. Il ne peut pas en trouver un dans ce cas. J'ai changé mon code-behind pour définir SelectedCity de type objet. Dans ce cas, le setter est appelé, même pour une ville nulle!

Je ne suis pas sûr que changer le type de SelectedCity est une bonne voie à suivre. L'objet Type ne doit pas être surutilisé. Mais vous pourriez avoir une autre propriété utilisée uniquement dans la liaison (et de type objet) qui définit correctement la Cité après la vérification de type.

Une autre meilleure solution consiste à déterminer s'il est judicieux de placer une ville nulle dans une liste liée. Pourriez-vous supprimer ceci ou avoir une ville spéciale avec un nom spécial qui représenterait null?

+0

Voici comment je l'utilise, Cities est la liste des objets de type "City" plus la valeur null et La propriété SelectedCity est également de type "Ville" – Greg