UWP XAML RadioButton IsChecked не работает

Вот мой XAML, показывающий, что первый переключатель проверяется, но когда форма отображается, ни один из них не выбран.

Когда я щелкаю по форме, радио-кнопки работают должным образом.

<StackPanel Margin="20,0" Orientation="Horizontal">
    <TextBlock Margin="0,0,10,0" VerticalAlignment="Center" Text="Search with:" />
    <RadioButton x:Name="rdoDates" Content="Dates" IsChecked="True" />
    <RadioButton x:Name="rdoTags" Content="Tags" IsChecked="False" />
    <RadioButton x:Name="rdoBoth" Content="Both" IsChecked="False" />
</StackPanel>

Обновить Насколько я понимаю, если ваши радиокнопки находятся внутри содержащего элемента, такого как стековая панель или что-то еще, вам не нужно GroupName, и добавление IsChecked = True к одному из них работает, поэтому я не использовал имя группы. Все работает нормально, пока вы не добавите вторую группу радиокнопок позже в потоке страниц с одним элементом IsChecked = True. Свойство IsChecked применяется ко второй группе переключателей, а первая не проверяется.

После того как я применил GroupName к каждому набору радиокнопок, IsChecked соблюдался для каждой группы.


person Terrence    schedule 23.08.2016    source источник
comment
Вы уверены, что у вас нет кода, который мог бы все испортить? Я не могу воспроизвести это, когда я запускаю пример приложения с вашим xaml - первая кнопка проверяется должным образом.   -  person RTDev    schedule 24.08.2016
comment
Пожалуйста, предоставьте дополнительную информацию, потому что, если я скопирую / вставлю этот фрагмент в чистый проект, он будет работать нормально.   -  person Tóth Tibor    schedule 24.08.2016


Ответы (3)


У меня была такая же проблема в UWP, и использование GroupName исправило ее! Я также использовал x: Bind для отладки, но это не помогло.

<StackPanel Orientation="Vertical">
                    <RadioButton x:Uid="radioButtonOriginalMap"
                                 Tag="OriginalMap"
                                 GroupName="Map"
                                 IsChecked="{x:Bind Vm.IsRadarOriginalMapChecked, Mode=TwoWay}"/>
                    <RadioButton x:Uid="radioButtonBingMap"
                                 GroupName="Map"
                                 Tag="BingMap"
                                 IsChecked="{x:Bind Vm.IsRadarBingMapChecked, Mode=TwoWay}"/>
</StackPanel>
person absinth    schedule 09.04.2017
comment
Идеально! Простое исправление при добавлении GroupName! - person Borzh; 11.10.2018

Я тоже столкнулся с подобными проблемами. Я точно не знаю, почему это происходит. Но чтобы быть уверенным, что радиокнопка проверяется каждый раз, я сделал это в конструкторе страницы из кода позади.

person Raxak    schedule 27.08.2016

Поздно к вечеринке, но мне помогло установить уникальные x:Name и GroupName по всему (!) Xaml, включая все элементы управления в отдельных файлах. Возможно, это слишком строго, но у меня было два элемента управления в разных xamls с одинаковыми именами внутри, и как только я изменил один из них, позже загруженный также стал ОК.

HTH

person user9    schedule 22.01.2018