2011-06-16 157 views
2

我需要把我的窗口3个单选按钮,并让用户只选择一个按钮。 我做了一个ListBox并设置了选择模式= Single,但我仍然可以选择所有这些,我需要将每个项目都包含在内容中......我不知道该怎么做。谁能帮忙?也许有另一种方式来呈现单选按钮并只选择一个......?选择单选按钮,wpf

这里是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> 
+0

虽然以下各种与GroupName相关的答案是正确的,但它们并没有解决更重要的问题:为什么在这里使用ListBox?通过将单选按钮放入列表框中,您已经引入了两种机制*这两种机制*都提供了从列表中选择单个项目的方法。它们有效地竞争,所以你的例子不能真正正常工作也就不足为奇了。要么使用ListBox,要么使用一组RadioButton。不要同时使用两者。 – 2011-06-16 12:14:06

+0

好评,如果你使用它作为布局复选框的方式,你最好使用stackpanel。 – 2011-06-16 14:57:15

回答

9

尝试在单选按钮元素(参见http://arcanecode.com/2007/09/20/the-wpf-radiobutton/)GroupName属性!

<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> 
+0

已经评论过了,你是否需要它成为一个列表框? – 2011-06-16 15:03:39

+0

不,我不需要它是一个ListBox,我有点困惑......在所有的评论后,我看到我的错误......谢谢。 – 2011-06-19 05:16:12

2

给他们(单选按钮)全部组名是一样的。

2

您需要赋予每个RadioButton一个GroupName属性,并让它们在您希望相互排斥的按钮之间相同。