Расширение функциональности SfRadioButton в Xamarin.Forms с использованием Syncfusion - PullRequest
0 голосов
/ 31 января 2019

У меня есть приложение Xamarin.Forms, предназначенное для Android, и я использую SfRadioGroup и SfRadioButton из Syncfusion, чтобы предоставить пользователю некоторые параметры.Однако я хочу предоставить больше информации о каждом конкретном выборе, который может сделать пользователь.

Я думаю, что хороший способ добиться этого - добавить информационную кнопку рядом с каждой RadioButton, которая откроет всплывающее окно с дополнительной информацией об этом выборе.

Я попытался включить RadioButton иинформационная кнопка в StackLayout или Gird, но тогда синхронизация между кнопками будет потеряна.Радиокнопки должны быть помещены непосредственно в SFRadioButtonGroup, в противном случае проверка одной из них не снимает флажки с других.Использование FlowListView и DataTemplate тоже не сработало.

Я бы сделал это в Wpf, создав новый элемент управления, расширяющий RadioButton, и для представления элемента управления я бы взял Xaml по умолчанию и изменил его.для того, чтобы добавить кнопку информации.Однако я не смог найти исходный код для Xaml SfRadioButton, и это делает расширение управления очень трудным.

Есть ли способ, которым я мог бы расширить или настроить SfRadioButton?Если нет, какие альтернативы у меня есть, чтобы добавить больше информации рядом с выбором пользователя?

Ниже приведен простой пример кода, иллюстрирующий то, чего я хочу достичь (это не работает, потому что прямой родительский элементRadioButton - это не 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 голосов
/ 01 февраля 2019

Согласно текущему поведению SfRadioGroup, список RadioButton будет рассматриваться как группа, только если RadioButton добавлен как прямой дочерний элемент в SfRadioGroup.Чтобы удовлетворить ваши требования, мы не можем добавить 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

0 голосов
/ 01 февраля 2019

Я не думаю, что вы можете достичь этого по-своему, поскольку вам нужно поставить buttons:SfRadioButton под buttons:SfRadioGroup.

, какие у меня есть альтернативы, чтобы добавить больше информации дальшена выбор пользователя?

Я бы дал вам решение:

Поместите label под каждым SfRadioButton и запишите данные на этикетке.Привязка IsVisible метки с SfRadioButton ischecked, поэтому метка будет отображаться один раз SfRadioButton isChecked, в противном случае метка будет invisible.

Если информация очень длинная, вы можетеизмените label на button ниже SfRadioButton.И нажмите кнопку, чтобы открыть информацию.

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


        <buttons:SfRadioButton
            x:Name="Sum"
            TextColor="Gray"
            IsChecked="{Binding Option2, Mode=TwoWay}"
            Text="Sum"
            VerticalOptions="Center" Margin="1,1,1,1" />

        <Label Text="detail Sum" BackgroundColor="Gray" BindingContext="{x:Reference Sum}" IsVisible="{Binding IsChecked}"/>


        <buttons:SfRadioButton
            x:Name="Individual"
        TextColor="Blue"
        IsChecked="{Binding Option1, Mode=TwoWay}"
        Text="Individual"
        VerticalOptions="Center" Margin="1,1,1,1" StateChanged="SfRadioButton_StateChanged"/>

        <Label Text="detail Individual" BackgroundColor="Gray" BindingContext="{x:Reference Individual}" IsVisible="{Binding IsChecked}"/>


    </buttons:SfRadioGroup>

Вот изображение, которое вы можете просмотреть:

Ответить мнеесли у вас есть какие-либо проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...