2016-04-03 2 views
0

Übersicht: Ich habe ein TimePicker-Steuerelement zu meiner Benutzeroberfläche hinzugefügt und die Bindung der Zeiteigenschaft auf eine DateTime-Eigenschaft auf dem zugeordneten ViewModel festgelegt.Wie Debugger Setter nicht auf Timepicker-Eigenschaft auslösen?

Aber wenn ich die Lösung debuggen wird der Setter nicht für die Eigenschaft SelectedParkDuration aufgerufen.

Um dies weiter zu debuggen, überprüfte ich den Datenkontext für die UI. Der Datenkontext ist korrekt eingestellt und der Getter des Timepickers wird aufgerufen.

Frage: Weiß jemand, warum der Setzer nicht aufgerufen wird, wenn ich zur Laufzeit einen Wert auf der Zeitauswahl wähle?

Time Picker Steuer Definition:

    <TimePicker Grid.Row="2" 
        Grid.Column="1" 
        Width="270" 
        Height="100" 
        HorizontalAlignment="Center" 
        VerticalAlignment="Bottom" 
        Header="Parking Duration" 
        Time="{Binding SelectedParkDuration}" 
        /> 

Time Picker Immobilien - SelectedParkDuration in dem Viewmodel UI definiert:

private DateTime _selectedParkDuration; 
    public DateTime SelectedParkDuration 
    { 
     get 
     { 
      return this._selectedParkDuration; 
     } 

     set 
     { 
      if (_selectedParkDuration != value) 
      { 
       _selectedParkDuration = value; 
       RaisePropertyChanged("SelectedParkDuration"); 
      } 
     } 
    } 
+2

Ihr Bindungsmodus TwoWay sein sollte –

Antwort

1

Die Lösung ist Zwei-Wege angeben Bindung als @Ken Tucker vorgeschlagen. Auch die Art der Immobilie benötigt vom Typ Timespan sein:

private TimeSpan? _selectedParkDuration; 
    public TimeSpan? SelectedParkDuration 
    { 
     get 
     { 
      return this._selectedParkDuration; 
     } 

     set 
     { 
      if (_selectedParkDuration != value) 
      { 
       _selectedParkDuration = value; 
       RaisePropertyChanged("SelectedParkDuration"); 
      } 
     } 
    } 

XAML Definition von Timepicker:

<TimePicker Grid.Row="2" 
         Grid.Column="1" 
         Width="270" 
         Height="100" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Bottom" 
         Header="Parking Duration" 
         Time="{Binding SelectedParkDuration, 
             Mode=TwoWay}" /> 
Verwandte Themen