У меня есть ситуация в Android MvvmCross, где у меня есть позиция SeekBar, связанная с свойством в модели представления. Свойство может быть обновлено путем сдвига полосы поиска или внешнего взаимодействия api, происходящего через сетевые сокеты. Если пользователь в настоящее время сдвигает строку поиска, я не хочу, чтобы внешний api мог обновить свойство и заставить панель поиска заметно перемещаться.MvvmCross binding + Android EventHandler
Я пытаюсь сделать это, установив свойство IsDimming, когда пользователь начнет скользить и перестанет скользить. Однако, как только я назначу эти собственные EventHandlers, часть {} части моего свойства больше не будет ударяться при перетаскивании строки поиска.
Связывание в представлении XML:
<SeekBar
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/seekBar"
android:max="100"
local:MvxBind="Progress DimmerPosition" />
Свойства в модели представления:
public bool IsDimming { get; set; }
private float _dimmerPosition;
public float DimmerPosition {
get {
return _dimmerPosition;
}
set { // This isn't hit when I have assigned native event handlers
_dimmerPosition = value;
_eventService.SendLightingState (UUIDAction, Number, value);
RaisePropertyChanged (() => DimmerPosition);
}
}
Мои родные обработчики для Android событий в коде зрения позади:
var slider = FindViewById<SeekBar> (Resource.Id.seekBar);
slider.StartTrackingTouch += (object sender, SeekBar.StartTrackingTouchEventArgs e) => {
ViewModel.IsDimming = true;
};
slider.StopTrackingTouch += (object sender, SeekBar.StopTrackingTouchEventArgs e) => {
ViewModel.IsDimming = false;
};
Есть каким-либо образом я могу иметь привязку И использовать обработчики событий? Стоит отметить, что привязка продолжает работать нормально в iOS, когда я назначаю обработчики событий TouchDown и TouchUpInside.
Большое спасибо
Том
также зарегистрирован как https://github.com/MvvmCross/MvvmCross/issues/884 – Stuart
Спасибо, что указал мне в правильном направлении Стюарт.Я думал, что маловероятно, что OnStartTrackingTouch и OnStopTrackingTouch были использованы в коде привязки, и я действительно вижу, что это не так. Но назначение им должно привести к замене всего SeekBarChangeListener. Я думаю, что, возможно, я могу преобразовать эту привязку, чтобы использовать обработчики событий, как вы предлагаете, и с удовольствием внесет ее обратно в проект. –