Выбор одиночной радиокнопки, wpf - PullRequest
2 голосов
/ 16 июня 2011

Мне нужно поставить на моем окне 3 переключателя и заставить пользователя выбрать только одну кнопку. Я сделал ListBox и установил режим выбора = один, но я все еще могу выбрать все из них, мне нужно обернуть каждый элемент во что-то ... я не знаю, что и как. Кто-нибудь может помочь? Может быть, есть другой способ представить радио-кнопки и выбрать только одну ...?

вот это xaml -

<ListBox SelectionMode="Single" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" Background="Transparent" BorderThickness="0" Margin="0,0,0,57" HorizontalAlignment="Right" Width="304" Height="146" VerticalAlignment="Bottom">
        <ListBoxItem>
            <RadioButton Content="Option 1" Margin="0,0,0,10" Height="16" HorizontalAlignment="Left"  Name="radioButton1" VerticalAlignment="Top" FontSize="12" />
        </ListBoxItem>
        <ListBoxItem>
            <RadioButton Content="Option 2" Margin="0,0,0,10" Height="16" HorizontalAlignment="Left"  Name="radioButton2" VerticalAlignment="Top" FontSize="12" />
        </ListBoxItem>
        <ListBoxItem>
            <StackPanel Orientation="Horizontal" Height="90">
                <RadioButton Content="Another : " Checked="radioButton4_Checked" Height="16" HorizontalAlignment="Left"  Name="radioButton4" VerticalAlignment="Top" FontSize="12" />
                <TextBox Width="225" Name="TextBox_AnotherReason" AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible"/>
            </StackPanel>
        </ListBoxItem>
    </ListBox> 

Ответы [ 3 ]

9 голосов
/ 16 июня 2011

Попробуйте свойство GroupName для элементов RadioButton (см. http://arcanecode.com/2007/09/20/the-wpf-radiobutton/)!

<StackPanel>
  <RadioButton GroupName=“One“ IsChecked=“True“>Option 1</RadioButton>
  <RadioButton GroupName=“One“ IsChecked=“False“>Option 2</RadioButton>
  <RadioButton GroupName=“Two“ IsChecked=“False“>Option 3</RadioButton>
  <RadioButton GroupName=“Two“ IsChecked=“True“>Option 4</RadioButton>
</StackPanel>

, поэтому в вашем случае:

<ListBox SelectionMode="Single" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" Background="Transparent" BorderThickness="0" Margin="0,0,0,57" HorizontalAlignment="Right" Width="304" Height="146" VerticalAlignment="Bottom">
    <ListBoxItem>
        <RadioButton GroupName=“Group1“ Content="Option 1" Margin="0,0,0,10" Height="16" HorizontalAlignment="Left"  Name="radioButton1" VerticalAlignment="Top" FontSize="12" />
    </ListBoxItem>
    <ListBoxItem>
        <RadioButton GroupName=“Group1“ Content="Option 2" Margin="0,0,0,10" Height="16" HorizontalAlignment="Left"  Name="radioButton2" VerticalAlignment="Top" FontSize="12" />
    </ListBoxItem>
    <ListBoxItem>
        <StackPanel Orientation="Horizontal" Height="90">
            <RadioButton GroupName=“Group1“ Content="Another : " Checked="radioButton4_Checked" Height="16" HorizontalAlignment="Left"  Name="radioButton4" VerticalAlignment="Top" FontSize="12" />
            <TextBox Width="225" Name="TextBox_AnotherReason" AcceptsReturn="True" TextWrapping="Wrap" VerticalScrollBarVisibility="Visible"/>
        </StackPanel>
    </ListBoxItem>
</ListBox> 
2 голосов
/ 16 июня 2011

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

2 голосов
/ 16 июня 2011

Дайте им (переключателям) все одинаковые имена групп.

...