2016-06-09 11 views
1

Ich versuche derzeit, einen Schieberegler in ViewA die Schriftgröße von Text in ViewA und ViewB ändern. Ich habe alles korrekt gebunden, aber der Delegat-Befehl ruft die execute-Methode nicht auf, wenn die Schriftgrößeneigenschaft geändert wird. Wenn ich diese Funktion manuell aufrufen, funktioniert alles wie erwartet, also ist es wahrscheinlich eine Zeile Code, die das Problem darstellt. Das ViewAViewModel ist unten:Delegate-Befehl nicht bei Änderung der Eigenschaft ausgeführt

public class ViewAViewModel : BindableBase 
{ 
    private Person _CoolChick = new Person(); 
    private int _fontSize = 12; 
    private IEventAggregator _eventAggregator; 
    public DelegateCommand UpdateSizeCommand { get; set; } 

    public Person CoolChick 
    { 
     get 
     { 
      return _CoolChick; 
     } 
     set 
     { 
      SetProperty(ref _CoolChick, value); 
     } 
    } 

    public int FontSize 
    { 
     get { return _fontSize; } 
     set { 
      Console.WriteLine(_fontSize + " => Font Size"); 
      SetProperty(ref _fontSize, value); 
      //Execute(); 
     } 
    } 

    public ViewAViewModel(IEventAggregator eventAggregator) 
    { 
     CoolChick.Age = 25; 
     CoolChick.Name = "Methalous"; 
     _eventAggregator = eventAggregator; 

     //likely the problem in this code 
     UpdateSizeCommand = new DelegateCommand(Execute, CanExecute).ObservesProperty(() => FontSize); 

    } 

    private void Execute() 
    { 
     _eventAggregator.GetEvent<UpdateEvent>().Publish(FontSize); 
    } 

    private bool CanExecute() 
    { 
     return true; 
    } 
} 
+0

Ihre Bindung ist wahrscheinlich falsch. Verwenden Sie ein Tool wie Snoop, um Ihre Bindungen zur Laufzeit zu untersuchen. – Will

Antwort

0

Warum sollte es? Sie rufen UpdateSizeCommand.Execute nicht im Setter Ihrer Font-Eigenschaft auf. Der Befehl wird nicht aufgerufen, es sei denn, Sie binden ihn an eine Befehlseigenschaft oder rufen ihn manuell auf.

+0

Oh, ich sehe jetzt. Ich erwartete, dass die execute-Methode immer dann aufgerufen wird, wenn sich die beobachtete Eigenschaft ändert. – Methalous