Я пытаюсь изменить выбранный пункт меню из моей ViewModel в приложении Xamarin.Forms. Как я могу это изменить?
Я связал свойство ListView SelectedItem с полем в моей ViewModel в режиме «TwoWay». Также я использовал BeginInvokeOnMainThread и ContinueWith.
Чтобы связать событие, я создал поведение и связал команду с событием.
Все способы не изменили выбранный пункт.
<ListView
x:Name="ListViewMenu"
HasUnevenRows="True"
ItemsSource="{Binding menuItems}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView.Behaviors>
<behaviors:EventToCommandBehavior
Command="{Binding command}"
Converter="{StaticResource SelectedItemConverter}"
EventName="ItemSelected" />
</ListView.Behaviors>
private HomeMenuItem selectedItem { get; set; }
public HomeMenuItem SelectedItem
{
get { return selectedItem; }
set
{
selectedItem = value;
this.OnPropertyChanged();
}
}
command = new AsyncRelayCommand((sender) => this.ItemSelected(sender).ContinueWith((arg) =>
{
HomeMenuItem menuItem = sender as HomeMenuItem;
if(menuItem.Id != SelectedItem.Id)
Device.BeginInvokeOnMainThread(() =>
{
SelectedItem = menuItems.Where(s => s.Id.Equals(menuItem.Id)).FirstOrDefault();
});
}));
Я ожидал изменить выбранный элемент с Id 2 на Id 0, но он всегда остается на Id 2, даже если переменная SelectedItem изменяется на Id 0. Я имею в виду, визуальное представление не меняется.