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;
}
}
Ihre Bindung ist wahrscheinlich falsch. Verwenden Sie ein Tool wie Snoop, um Ihre Bindungen zur Laufzeit zu untersuchen. – Will