【问题标题】:Selecting single radio button, wpf选择单个单选按钮,wpf
【发布时间】:2011-09-16 07:13:47
【问题描述】:

我需要在窗口 3 上添加单选按钮,并让用户只选择一个按钮。 我制作了一个 ListBox 并设置了 Selection mode = Single 但我仍然可以选择所有这些,我需要将每个项目包装在一些东西中......我不知道是什么以及如何。任何人都可以帮忙吗?也许还有另一种方法可以显示单选按钮并只选择一个...?

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

【问题讨论】:

  • 虽然下面各种与 GroupName 相关的答案都是正确的,但它们并没有解决一个更重要的问题:你为什么在这里使用 ListBox?通过将单选按钮放入 ListBox,您引入了两种机制两者都提供了一种从列表中选择单个项目的方法。他们有效地竞争,所以你的例子不能正常工作也就不足为奇了。要么使用 ListBox,要么使用一组 RadioButtons。不要同时使用。
  • 好话,如果你用它来布局复选框,你最好使用 stackpanel。

标签: c# .net wpf listbox radio-button


【解决方案1】:

试试 RadioButton 元素的 GroupName 属性(参见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> 

【讨论】:

  • 不,我不需要它是一个 ListBox ,我有点困惑......在所有的评论之后,我看到了我的错误......谢谢。
【解决方案2】:

您需要为每个 RadioButton 赋予一个 GroupName 属性,并使其在您希望互斥的按钮之间保持相同。

【讨论】:

    【解决方案3】:

    给他们(单选按钮)一个相同的组名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-24
      • 2021-08-30
      • 2015-02-27
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多