У меня есть пользовательский контроль, и он обрабатывает событие из элемента управления и передает его родительскому.MVVM Events и ICommand Binding
Код управления
public delegate void ThumbMovedEventHandler(object sender);
public event ThumbMovedEventHandler ThumbMoved;
private void SliderTimeLine_OnDragCompleted(object sender, DragCompletedEventArgs e)
{
if (ThumbMoved != null)
ThumbMoved(this);
}
Я хочу, чтобы связать событие с командой в моем MVVM приложения.
View Code
<TimeTimeSlider:TimeSlider
StartDate="{Binding TimeLineStartDate}"
local:CommandBehavior.Event="ThumbMoved"
local:CommandBehavior.Action="{Binding ThumbMoved}"
local:CommandBehavior.CommandParameter="Thumb Place Ment Moved "
/>
ViewModel Код
private ICommand thumbMoverCommand;
public ICommand ThumbMoved
{
get { return this.thumbMoverCommand ?? (this.thumbMoverCommand = new DelegateCommand(this.ExcuteThumbMoved)); }
}
public void ExcuteThumbMoved()
{
//Do Something;
}
Когда Событие генерируется из-под контроля на классе Called CommandBehaviorBinding
public ICommand Command
{
get { return _command; }
set
{
_command = value;
//set the execution strategy to execute the command
_strategy = new CommandExecutionStrategy { Behavior = this };
}
}
public void Execute()
{
_strategy.Execute(CommandParameter);
}
Я получаю «ссылка на объект не установлен к экземпляру объекта ", потому что _strategy имеет значение null.
Как исправить это?
Я не вижу никакого кода, который присваивает что-либо '_strategy'. Я вижу пользовательский набор, который * будет * назначать ему, но я не вижу нигде, что называется. –