首页 > 解决方案 > 是否可以将 RadioButton 保留为可扩展控件 Xamarin 表单 4.6 的标题

问题描述

我正在尝试制作付款方式页面。我正在尝试做的功能是 - 单击radio button并且expander正文应显示文本框以添加相应的详细信息。所以我尝试了这段代码:

<Grid Grid.Row="2">
            <StackLayout Orientation="Vertical" >
                <Frame BorderColor="Gray"
                       CornerRadius="5"
                       Padding="8">
                    <StackLayout >
                        <Expander>
                            <Expander.Header>
                                <StackLayout>
                                    <Label Text="COD"/>
                                    <RadioButton GroupName="PaymentMethod" 
                                     Text="{lang:Translate COD}" 
                                     IsChecked="False"/>
                                </StackLayout>
                            </Expander.Header>                                
                        </Expander>
                    </StackLayout>
                </Frame>

                <Frame BorderColor="Gray"
                       CornerRadius="5"
                       Padding="8">
                    <StackLayout>
                        <Expander>
                            <Expander.Header>
                                <StackLayout>
                                    <Label  Text="Card Payment"/>
                                    <RadioButton GroupName="PaymentMethod" 
                                 Text="{lang:Translate Card}" 
                                 IsChecked="False"/>
                                </StackLayout>
                            </Expander.Header>
                            <Expander.Content>
                                <Grid Padding="10">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="auto"/>
                                        <RowDefinition Height="auto"/>
                                    </Grid.RowDefinitions>
                                    <Grid Grid.Row="0">
                                        <StackLayout Orientation="Horizontal">
                                            <local:XEntry Style="{StaticResource entry}"                                              
                                        Placeholder="Card Number"
                                        PlaceholderColor="LightGray"
                                        MaxLength="100"/>
                                            <!--Text="{Binding CardNumber}"-->
                                            <local:XEntry Style="{StaticResource entry}"
                                        Placeholder="MM"
                                        PlaceholderColor="LightGray"
                                        Text="{Binding Month}"
                                        MaxLength="2"/>
                                            <Label Text="/"/>
                                            <local:XEntry Style="{StaticResource entry}"
                                        Placeholder="YY"
                                        PlaceholderColor="LightGray"
                                        MaxLength="2"/>
                                            <!--Text="{Binding Year}"-->
                                            <local:XEntry Style="{StaticResource entry}"
                                        Placeholder="CVV"  
                                        PlaceholderColor="LightGray"
                                        MaxLength="3"/>
                                            <!--Text="{Binding CVV}"-->
                                        </StackLayout>
                                    </Grid>
                                    <Grid Grid.Row="1">
                                        <StackLayout>
                                            <local:XEntry Style="{StaticResource entry}"                                               
                                        Placeholder="Card Holder Name"
                                        PlaceholderColor="LightGray"
                                        MaxLength="100"/>
                                            <!--Text="{Binding CardHolderName}"-->
                                        </StackLayout>
                                    </Grid>
                                </Grid>
                            </Expander.Content>
                        </Expander>
                    </StackLayout>
                </Frame>
                <Frame BorderColor="Gray"
                       CornerRadius="5"
                       Padding="8">
                    <StackLayout>
                        <Expander>
                            <Expander.Header>
                                <StackLayout>
                                    <Label Text="Net Banking"/>
                                    <RadioButton GroupName="PaymentMethod" 
                                 Text="{lang:Translate Card}" 
                                 IsChecked="False" />
                                    <!--{Binding NetBank}-->
                                </StackLayout>
                            </Expander.Header>
                            <Expander.Content>
                                <StackLayout>                                        
                                    <Label  Text="Net Banking"/>
                                </StackLayout>
                            </Expander.Content>
                        </Expander>
                    </StackLayout>
                </Frame>
            </StackLayout>                                                 
        </Grid>

仅当header包含Lable我在上面粘贴的类似代码时,扩展器才起作用。当我只添加RadioButtonin 时header,它不会扩展。我不希望标题中的标签。相反,我希望在单选按钮处于活动状态时展开扩展器。我正在使用 Xamarin.Forms 4.6 ReleaseRadioButtonExpander. 请提出解决方案。提前致谢。

标签: xamarin.formsradio-buttonexpander

解决方案


谢谢你的时间。这是答案:

<Expander x:Name="MyExpander"> <Expander.Header> <StackLayout> <RadioButton HorizontalOptions="StartAndExpand" WidthRequest="200" GroupName="PaymentMethod" Text="Credit/Debit Card" IsChecked="False" Clicked="RadioButton_Clicked"/> </StackLayout> </Expander.Header> </Expander>

在cs文件中:

private void RadioButton_Clicked(object sender, EventArgs e) { MyExpander.IsExpanded = !MyExpander.IsExpanded; }


推荐阅读