2010-09-02 5 views
1

Je travaille sur WPF. J'utilise Visual Studio 2010, .NET 4.0 et l'utilisation d'un Radcombobox dans mon application. Il est correctement rempli avec 3 chaînes et maintenant j'ai du mal à choisir une valeur par défaut. Je veux sélectionner la première valeur d'index comme valeur par défaut quand il commence à charger les 3 chaînes dans la liste déroulante. Comment est-ce que je fais cela par programme? Cela devrait-il être fait dans xaml ou en C#?Définir une valeur par défaut dans la liste déroulante

+0

Quels problèmes rencontrez-vous? Est-ce que dans XAML ou "myComboBox.SelectedIndex = 0" dans code-behind ne serait pas assez bon? – ASanch

+0

Si vous envoyez un exemple de code, il sera plus facile de le déterminer, souvent j'ai une propriété value dans mon viewmodel, et elle est définie par programme. Faites-vous cela en utilisant le modèle MVVM? – JoshVarga

+0

Cela n'a pas fonctionné, j'ai donc posté cette question ici. Je suis nouveau à WPF mais j'ai fait une chose similaire dans les formulaires Windows avec .NET 3.5. Je sais que cela ne devrait pas être un problème, mais ça ne marche pas. – zack

Répondre

0

Utilisez un compteur. Créez une variable booléenne et appelez-la boolDefaultSet. Il devrait initialiser avec une valeur par défaut de false. Vraisemblablement, vous utiliseriez une boucle pour afficher les cases d'option de votre boîte de sélection ... à l'intérieur de cette boucle, écrivez une certaine logique pour vérifier si boolDefaultSet est vrai. Si ce n'est pas le cas, imprimez la boîte d'option avec un attribut 'selected', puis définissez boolDefaultSet égal à true. Voici le code vb que vous pourriez mettre en œuvre en C#:

Dim boolDefaultSet as boolean
for i as integer = 0 to 2
    if boolDefaultSet then
        Response.Write("<option value="+myval+">"+myval+"</option>")
    else
        Response.Write("<option value="+myval+" selected>"+myval+"</option>")
        boolDefaultSet=true
next i

+0

J'ai vraiment besoin de le faire? Il devrait y avoir un attribut ou une propriété de la RadComboBox droite? Ne devrait-il pas être aussi simple? Je ne sais pas pourquoi SelectedItem = 1 dans la balise de zone de liste déroulante dans xaml ne semble pas fonctionner. Ou en code C# soit .. – zack

+0

SelectedItem ne fonctionnera pas. Essayez SelectedIndex – GWLlosa

0

Si la mise en SelectedIndex de XAML ne fonctionnait pas, je voudrais essayer de le faire en C# événement de chargement de code.

myName.SelectedIndex = 0;

+0

qui ne fonctionnerait pas non plus – zack

0

Vous ne devez pas utiliser SelectedValue AND SelectedIndex en même temps car cela crée souvent une sorte de conflit. Je vous suggère de supprimer SelectedIndex = "0" du xaml et de définir la propriété à laquelle vous liez votre SelectedValue du code.

exemple:

MySelectedValue = MyItemsSource[0]; 
0

Ceci est plus d'une réponse MVVM:

Bind la propriété SelectedIndex en XAML à une propriété sur votre ViewModel.

SelectedIndex="{Binding Path=SelectedIndex, Mode=TwoWay}" 

Dans votre ViewModel, définissez la valeur SelectedIndex à 1, puis appeler PropertyChangeNotification, la vue sait mettre à jour (cela suppose que votre ViewModel implémente INotifyPropertyChanged, et la plupart des implémentations VM utilisent une classe de base pour le faire).

SelectedIndex = 1; 
NotifyPropertyChanged("SelectedIndex"); 
Questions connexes