使用Syncfusion扩展Xamarin.Forms中的SfRadioButton功能

时间:2019-01-31 07:00:56

标签: android xamarin.forms radio-button syncfusion

我有一个针对Android的Xamarin.Forms应用,我正在使用Syncfusion中的SfRadioGroup和SfRadioButton,以便向用户提供一些选项。但是,我想提供有关用户可以做出的每个特定选择的更多信息。

我认为,实现这一目标的一种好方法是在每个RadioButton旁边添加一个信息按钮,这将打开一个弹出窗口,其中包含有关该选择的更多信息。

我试图将RadioButton和信息按钮包括在StackLayout或Gird中,但是按钮之间的同步将丢失。需要将RadioButton直接放置到SFRadioButtonGroup中,否则选中其中一个将不会取消选中其他按钮。使用FlowListView和DataTemplate也不起作用。

我在Wpf中执行此操作的方式是创建一个扩展RadioButton的新控件,对于该控件的视图,我将使用默认的Xaml并对其进行修改以添加一个信息按钮。但是,我找不到SfRadioButton Xaml的源代码,这使得扩展控件非常困难。

有没有一种方法可以扩展或自定义SfRadioButton?如果没有,我有什么选择来在用户的选择旁边添加更多信息?

下面是一个简单的代码示例,用于说明我要实现的目标(这不起作用,因为RadioButtons的直接父级不是RadioButtonGroup,而是StackLayouts)

 <buttons:SfRadioGroup
        Grid.Row="3" Grid.Column="0"
        x:Name="radioGroup"
        HorizontalOptions="Fill"
        Orientation="Vertical"
        VerticalOptions="CenterAndExpand"
        Margin="10,5,10,0">

        <StackLayout Orientation="Horizontal">
        <buttons:SfRadioButton
            TextColor="{StaticResource AppForegroundColor}"
            IsChecked="{Binding Option1, Mode=TwoWay}"
            Text="Individual"
            VerticalOptions="Center" Margin="1,1,1,1" />
        <Button Command="{Binding Path=OpenPopupInfoOption1}"/>
        </StackLayout>

        <StackLayout Orientation="Horizontal">
        <buttons:SfRadioButton
            TextColor="{StaticResource AppForegroundColor}"
            IsChecked="{Binding Option2, Mode=TwoWay}"
            Text="Sum"
            VerticalOptions="Center" Margin="1,1,1,1" />
        </StackLayout>
        <Button Command="{Binding Path=OpenPopupInfoOption2}"/>
    </buttons:SfRadioGroup>

2 个答案:

答案 0 :(得分:1)

我认为您无法以自己的方式实现目标,因为您需要将buttons:SfRadioButton放在buttons:SfRadioGroup下。

  

为了在广告旁边添加更多信息,我有什么选择   用户的选择?

我会给你一个解决方案:

在每个label下放置SfRadioButton,并将详细信息写在标签中。将标签的IsVisible与SfRadioButton的{​​{1}}绑定在一起,这样标签将一次显示ischecked SfRadioButton,否则标签为isChecked

如果信息很长,您可以将invisible更改为label button。然后单击按钮以弹出信息。

SfRadioButton

以下是您可以查看的gif文件:

如果有任何问题,请回复我。

答案 1 :(得分:0)

根据SfRadioGroup的当前行为,仅当RadioButton作为SfRadioGroup的直接子代添加时,才将RadioButtons列表视为组。为了满足您的要求,我们无法将SfRadioButton添加为直接子级。

因此,我们可以通过手动更改其他两个SfRadioButton的状态来满足您的要求。请参考以下代码段。

代码段:

private void GoogleChrome_StateChanged(object sender, Syncfusion.XForms.Buttons.StateChangedEventArgs e)  
        {  
            if(e.IsChecked.Value)  
            {  
                Instagram.IsChecked = false;  
                Skype.IsChecked = false;  
            }  
        }  

示例http://www.syncfusion.com/downloads/support/directtrac/226145/ze/RadioButtonSample1174471588

我们还已经将此功能请求添加到我们的数据库中。

我们没有任何立即实施此功能的计划。在每个发布周期的计划阶段,我们都会检查所有开放功能。您可以从下面的反馈门户跟踪功能。

https://www.syncfusion.com/feedback/4463

注意:我为Syncfusion工作。

致谢,
Dhanasekar