属性 更改时未执行委托命令
Delegate command not executing on property change
我目前正在尝试让 ViewA 中的滑块更改 viewA 和 viewB 中文本的字体大小。我已正确绑定所有内容,但当字体大小 属性 更改时委托命令未调用执行方法。如果我手动调用此函数,一切都会按预期进行,因此很可能是一行代码出了问题。 ViewAViewModel 如下:
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;
}
}
为什么会这样?您没有在字体 属性 的 setter 中调用 UpdateSizeCommand.Execute。该命令不会调用,除非您将它绑定到命令 属性 或手动调用它。
我目前正在尝试让 ViewA 中的滑块更改 viewA 和 viewB 中文本的字体大小。我已正确绑定所有内容,但当字体大小 属性 更改时委托命令未调用执行方法。如果我手动调用此函数,一切都会按预期进行,因此很可能是一行代码出了问题。 ViewAViewModel 如下:
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;
}
}
为什么会这样?您没有在字体 属性 的 setter 中调用 UpdateSizeCommand.Execute。该命令不会调用,除非您将它绑定到命令 属性 或手动调用它。