Я изо всех сил пытаюсь использовать ProgressBar в структуре MVVMCross Android Xamarin. Первоначально я хотел связать видимость ProgressBar с полем в моей ViewModel. Это оказалось трудным, я попробовал несколько перестановок и попробовал предложения отсюда: Как установить видимость для ProgressBar в Android MvvmCross Xamarin
У меня есть другие элементы, такие как кнопки, которые я смог успешно привязать в другом месте моего проекта, поэтому я не уверен, почему это было такой большой проблемой. После многих попыток я решил попробовать установить Visibility прагматично в ViewModel. Я перепробовал несколько методов, но то, что я наконец-то подумал, наверняка сработает.
Xaml:
<ProgressBar
android:id="@+id/progressBarMap"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone"
style="@android:style/Widget.ProgressBar.Large" />
Я пробовал с видимостью по умолчанию и без нее. Я попробовал локальный: MvxBind с несколькими обычными методами привязки, а затем с помощью пользовательского конвертера или с плагином Visibility.
В своем фрагменте я с сожалением установил свойство FragmentActivity в моей модели представления, просто чтобы посмотреть, смогу ли я заставить это работать в некоторой форме (OnCreateView):
ViewModel.FragActivity = this.Activity;
ViewModel.Progress = view.FindViewById<Android.Widget.ProgressBar>(Resource.Id.progressBarMap);
Обратите внимание, что я также попытался установить ProgressBar в поле с именем Progress и использовать его в моей ViewModel.
Вот где я манипулирую ProgressBar в моей ViewModel:
private void AddOfflinePoints()
{
try
{
FragActivity.RunOnUiThread(() =>
{
//I've also tried using the above Progress property. That wasn't null but did not update.
ProgressBar barOfProgression = FragActivity.FindViewById<ProgressBar>(Resource.Id.progressBarMap);
//barOfProgression is null :(
barOfProgression.Visibility = ViewStates.Visible;
barOfProgression.Enabled = true;
});
//Code to run while spinning the progress bar (It is inside Task.Run)
}
catch (Exception)
{
//Exception Handling code...
}
FragActivity.RunOnUiThread(() => Progress.Visibility = ViewStates.Gone);
}
Что я делаю не так? Я перепробовал множество перестановок, что угодно в Google и ознакомился с ограниченной документацией Xamarin. Любая помощь или указатели очень ценятся.
Спасибо.