从xamarin MVVM中的SfRadioButton获取选定值



我想在我的viewModel中使用syncfusion单选按钮获得选中的单选按钮的值,这样我就可以根据选中的值做一些逻辑。我似乎无法得到选定的值。请帮助!

Xaml

<syncfusion:SfRadioGroup x:Name="radioGroup"
BindableLayout.ItemsSource="{Binding Items}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<syncfusion:SfRadioButton 
Text="{Binding PaymentMethod}" />
</DataTemplate>
</BindableLayout.ItemTemplate>
</syncfusion:SfRadioGroup>

视图模型
public List<PaymentMthd> Items { get; set; }

Items = new List<PaymentMthd>()
{
new PaymentMthd(){PaymentMethod = "Cash" , id = 1},
new PaymentMthd(){PaymentMethod = "Visa Card" , id = 2},

};
private int _IsChecked;

public int IsChecked
{
get { return _IsChecked; }
set { SetProperty(ref _IsChecked, value); }

您可以添加StateChanged事件来侦听状态。

<syncfusion:SfRadioButton 
Text="{Binding PaymentMethod}" StateChanged="RadioButton_StateChanged" />

然后在代码后面:

private void RadioButton_StateChanged(object sender, StateChangedEventArgs e)
{
if (e.IsChecked.HasValue && e.IsChecked.Value)
{
//if checked,do something
}
else if (e.IsChecked.HasValue && !e.IsChecked.Value)
{
//if not checked,do something
}
}

您还可以使用CheckedChanged事件来获取在RadioGroup中选中的RadioButton,该事件在更改RadioGroup中的选择时已被调用。

<syncfusion:SfRadioGroup x:Name="radioGroup" BindableLayout.ItemsSource="{Binding Items}"
CheckedChanged="CheckedChanged_event">
<BindableLayout.ItemTemplate>
<DataTemplate>
<syncfusion:SfRadioButton Text="{Binding PaymentMethod}" />
</DataTemplate>
</BindableLayout.ItemTemplate>
</syncfusion:SfRadioGroup>

:

private void CheckedChanged_event(object sender,Syncfusion.XForms.Buttons.CheckedChangedEventArgs e)
{ 
// To get the selected RadioButton - e.CurrentItem
// To get the previously selected RadioButton -  e.PreviousItem
}

最新更新