Я пытаюсь изменить выбранный элемент меню из моей 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();
});
}));
Я ожидал изменить выбранный элемент с идентификатора элемента 2 на идентификатор 0, но он всегда остается на идентификаторе 2, даже если переменная SelectedItem изменена на идентификатор 0. Я имею в виду, что визуальное представление не меняется.