我正在尝试从我的 Xamarin.Forms 应用程序中的 ViewModel 更改菜单选定项。我该如何改变呢?
我已将 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。我的意思是视觉表示不会改变。