2013-10-13 1 views
0

D'abord laissez-moi mettre mon code.La sélection de ComboBox ne fonctionne pas dans WPF avec la souris

Stockgroup EntityType

public partial class StockGroup 
{ 
    public StockGroup() 
    { 
     this.StockGroups = new HashSet<StockGroup>(); 
     this.Stocks = new HashSet<Stock>(); 
    } 

    public int ID { get; set; }   
    public string GroupName { get; set; }   
    public Nullable<int> ParentID { get; set; } 
    public Nullable<System.DateTime> CreatedOn { get; set; } 
    public Nullable<System.DateTime> ModifiedOn { get; set; } 

    public virtual ICollection<StockGroup> StockGroups { get; set; }     
    public virtual StockGroup Parent { get; set; } 
    public virtual ICollection<Stock> Stocks { get; set; } 

    public override string ToString() { return GroupName; } 
    public override bool Equals(object obj) 
    { 
     StockGroup stkGrp = obj as StockGroup; 
     if (stkGrp == null) 
      return false; 
     else 
      return ID.Equals(stkGrp.ID);    
    } 
    public override int GetHashCode() 
    { 
     return ID.GetHashCode(); 
    } 
} 

une propriété de ViewModel qui se lie à l'aide de ComboBox Caliburn.Micro.

private IList<StockGroup> _groupParents; 
public IList<StockGroup> GroupParents 
{ 
    get 
    { 
     return _groupParents; 
    } 
    set 
    { 
     _groupParents = value; 
     NotifyOfPropertyChange(() => GroupParents); 
    } 
} 

ComboBox XAML

<ComboBox Name="GroupParents" ToolTip="group parents" 
      Margin="5,0,5,5" 
      IsSynchronizedWithCurrentItem="True"          
      core:Message.Attach="[Event GotFocus]=[LoadGroupParents]"     
      IsEditable="True" 
      DisplayMemberPath="GroupName" 
      SelectedValuePath="ID"     
      IsReadOnly="False"> 
    <ComboBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel /> 
     </ItemsPanelTemplate> 
    </ComboBox.ItemsPanel> 
</ComboBox> 

Tout va bien jusqu'à ici et combobox obtient toutes les données de base de données. J'ai le premier enregistrement sélectionné dans ComboBox. Lorsque je sélectionne un élément de zone de liste déroulante différent à l'aide de la souris, l'élément sélectionné n'a pas pu être modifié et il est toujours dans le premier enregistrement. La sélection ComboBox fonctionne avec KeyDown mais pas avec Mouse.

Pour SelectedItem, j'ai appelé la propriété SelectedGroupParent dont la valeur change quand je change de souris, mais il ne figure pas dans TextBox ComboBox.

Veuillez suggérer des solutions à ce problème. J'ai essayé tout le chemin, mais ça ne marche pas. Même la liaison à CollectionView ne fonctionne pas.

+0

Y at-il un bien sur la vue modèle qui tient la 'SelectedItem'? –

+0

Il sera automatiquement lié par Caliburn.Micro. J'ai la propriété appelée SelectedGroupParent dont la valeur change lorsque je change par Mouse, mais elle ne s'affiche pas dans TextBox ComboBox. –

+0

Alors quel est votre problème, vous dites que 'SelectedItem' change dans le view-model, mais dans votre question vous dites que le' SelectedItem' ne pourrait pas changer? –

Répondre

1

C'était ma mauvaise.

En fait, je rechargeait ComboBox sur GotFocus, qui rend l'élément sélectionné pour être toujours à l'index 1.

Questions connexes