Пользовательский контроль wpf Предварительный выбор RadioButton - PullRequest
1 голос
/ 08 декабря 2009

Я получил очень простой пользовательский элемент управления (диаграммы видимости + датчики и некоторые радиокнопки для управления фильтрацией и т. Д.):

<GroupBox Header="Scale" Width="159" HorizontalAlignment="Left" Margin="10,47,0,0"
          Height="38" VerticalAlignment="Top" Name="scalingBox">
    <Canvas Height="16">
        <RadioButton Name="scaleDays" Content="Days" GroupName="g2" Width="47"
                     IsChecked="True" Checked="scale_Change"/>
        <RadioButton Name="scaleHours" Content="Hours" GroupName="g2" Canvas.Left="60"
                     Width="59" Checked="scale_Change"/>
    </Canvas>
</GroupBox>

Первый бит - то, что установка IsChecked в значение true на первой кнопке ничего не делает, когда отображается элемент управления.

Поиск обходного пути Я раскрыл некоторые общедоступные методы для проверки нужных кнопок из родительского окна, но когда у меня более одного MyControl, вызов этих методов проверяет кнопки только в одном экземпляре, где методы были вызваны в последний раз. как это:

myControl1.SetDefaultScale();
myControl2.SetDefaultScale();

проверяет только кнопки на myControl2, при этом все кнопки в группе не отмечены на myControl1.

Есть идеи, что может быть причиной этого?


И да, это было имя группы, которая была разделена между всеми элементами управления ... Спасибо Aran

Ответы [ 2 ]

2 голосов
/ 08 декабря 2009

Я получил ваш код, поместил его в новый проект и в главное окно. и первая кнопка подошла проверил.

RadioButtons имеют некоторые ошибки, сначала они теряют свои привязки, если вы нажимаете на них, смотрите здесь . Я описал поведение, когда имена групп распределяются между формами, как и некоторые другие люди . Как мне обойти эти проблемы, это связать каждую радио-кнопку отдельно и обработать логику выбора самостоятельно. (если выбран один, установите свойства, с которыми другие в «группе» связаны, чтобы быть ложными)

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

0 голосов
/ 08 декабря 2009

Причина, по которой только одна радиокнопка может быть отмечена в форме, связана с областью действия GroupName.

Когда я попытался использовать два экземпляра пользовательских элементов управления с переключателями и без указания GroupName, область действия эффекта переключателя была ограничена групповым блоком внутри пользовательского элемента управления.

Когда для переключателей в пользовательском элементе управления было указано одно и то же GroupName, это означало, что все переключатели в окне имели одно и то же GroupName и включены в одну группу. Только одна кнопка в группе во всем окне может быть проверена одновременно.

Ответ состоит в том, чтобы удалить свойство GroupName из переключателей и позволить естественной группировке GroupBox вступить в силу.

...