2017-01-06 1 views
0

Ich muss die Dropdown-Box füllen, wenn das Dropdown-Menü geöffnet ist. Ich meine, ich klicke auf den Pfeil und die VM muss es ausfüllen und dann öffnen. Ich habe eine ObservableCollection von Strings, um die Combobox auszufüllen. Das MVM ist auch INotifyPropertyChanged.So füllen Sie die Combobox auf DropDownOpened

<ComboBox x:Name="ServersBox" Grid.Row="0" Grid.Column="1" Height="23" IsEditable="True" IsSynchronizedWithCurrentItem="True" IsTextSearchEnabled="True" 
     IsTextSearchCaseSensitive="False" StaysOpenOnEdit="True" ItemsSource="{Binding AvailableSqlServer}" 
     SelectedItem="{Binding SelectedSqlServer}" Text="{Binding newServer, UpdateSourceTrigger=LostFocus, Mode=TwoWay}" Width="261"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="DropDownOpened" SourceObject="{Binding ElementName=ServersBox}"> 
      <i:InvokeCommandAction Command="{Binding OnDropDownOpened}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 
</ComboBox> 


public MigratorSqlViewModel(Migrator _m) 
{ 
    _setdropDownCommand = new RelayCommand<object>(OnDropDownOpened); 
} 
private RelayCommand<object> _setdropDownCommand; 
public RelayCommand<object> SetdropDownCommand 
{ 
    get {return _setdropDownCommand; } 
    set { _setdropDownCommand = value; } 
} 

public void OnDropDownOpened(object obj) 
{ 

    AvailableSqlServer = _Migrator.getServer(); 

} 

public ObservableCollection<string> AvailableSqlServer 
{ 
    set 
    { 
     this._availableSqlServer = value; 
     _Migrator.AvailableSqlServer = _availableSqlServer; 
     OnPropertyChanged("AvailableSqlServer"); 
    } 
    get { return _availableSqlServer; } 
} 

Es passiert nichts.

Antwort

2

In Ihrem Code haben Sie den Befehlsnamen SetdropDownCommand, aber Sie haben OnDropDownOpened gebunden. Also bitte den Befehl korrekt wie folgt binden.

<i:InvokeCommandAction Command="{Binding SetdropDownCommand}" /> 
+0

Vielen Dank. Es funktioniert. Du hast meinen Tag gerettet. Vielen Dank))) – Bird75

+0

@ Bird75 Most Welcome :-) – Vijay

+0

Wie kann ich es machen, dass selbst ich dropdown die Liste geladen wird, aber damit die Conbobox nicht das erste Element auswählt. Ich meine, dass, ohne etwas von einem Benutzer zu wählen, der ausgewählte Gegenstand leer ist. – Bird75

Verwandte Themen