我有一个针对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>
答案 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