the*_*guy 6 binding command picker mvvm xamarin.forms
我一直在寻找尝试解决这个问题,我没有长时间使用Xamarin表格,但我认为这很容易.我试图将pickitem的picker绑定到视图模型中的命令,我使用的是FreshMVVM和Xamarin表单版本2.3.4.214-pre5,我能够绑定视图模型中的数据但是选择器中没有Command选项.
任何帮助,将不胜感激.谢谢
the*_*guy 14
我已经能够得到一个有效的解决方案:
首先,我安装了Xamarin Forms版本2.3.4.214-pre5,它运行得很好.然后在Xamarin论坛的帮助下,我获得了一个解决方案,如下所示:
1 - Behaviors.Forms通过Install-Package Behaviors.Forms在NuGet包管理器控制台中运行来安装NuGet包.
2 - 然后在XAML页面中包含以下命名空间:
<ContentPage xmlns:behaviors="clr-namespace:Behaviors;assembly=Behaviors">
</ContentPage>
Run Code Online (Sandbox Code Playgroud)
3 - 然后Picker.Behaviors在Picker标记中添加属性:
<Picker x:Name="MyPicker"
ItemsSource="{Binding IdentityProviders}"
HorizontalOptions="FillAndExpand" Title="Identity Provider"
Margin="10"
ItemDisplayBinding="{Binding Description}">
<Picker.Behaviors>
<behaviors:EventHandlerBehavior EventName="SelectedIndexChanged">
<behaviors:InvokeCommandAction Command="{Binding SelectedProviderChanged}" />
</behaviors:EventHandlerBehavior>
</Picker.Behaviors>
</Picker>
Run Code Online (Sandbox Code Playgroud)
如果要将数据作为参数传回,请在命令后包含以下内容 CommandParameter="{Reference MyPicker}"
这解决了我的问题,我希望这会有所帮助:我得到的帮助来自这篇帖子MVVM Light - 如何在viewModel中使用selectedIndexChanged事件
您需要做的就是监视视图模型中的 SelectedItem 属性。
private ObservableRangeCollection<UserViewModel> _users = new ObservableRangeCollection<UserViewModel>();
public ObservableRangeCollection<UserViewModel> Users
{
get => _users;
set { _users = value; OnPropertyChanged(); }
}
private User _selectedUser;
public UserModelView CurrentUser
{
get => _selectedUser;
set { _selectedUser = value;
//Do Some stuff with your new user();
OnPropertyChanged();
}
}
<Picker WidthRequest="100"
ItemsSource="{Binding Users}"
ItemDisplayBinding="{Binding Name}"
SelectedItem="{Binding CurrentUser, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)
cva*_*eek -4
要在选择选择器项时运行代码,请指定SelectedIndexChanged选择器的属性:
<Picker x:Name="myPicker" SelectedIndexChanged="indexChanged"/>
Run Code Online (Sandbox Code Playgroud)
然后在后面的代码中添加您的indexChanged方法:
void indexChanged(object sender, EventArgs e)
{
//Your code here
}
Run Code Online (Sandbox Code Playgroud)
然后,当用户从选择器中选择不同的项目时,它将运行 indexChanged 方法。
| 归档时间: |
|
| 查看次数: |
7410 次 |
| 最近记录: |