如何在wpf中获得选中的单选按钮的值
本文关键字:单选按钮 wpf | 更新日期: 2023-09-27 18:09:20
我在网格面板中有四个RadioButtons
,但是当我这样做时:
<GroupBox x:Name="radioButtons">
<RadioButton Content="1" Height="16" HorizontalAlignment="Left" Margin="10,45,0,0" Name="status1" VerticalAlignment="Top" />
<RadioButton Content="2" Height="16" HorizontalAlignment="Left" Margin="10,67,0,0" Name="status2" VerticalAlignment="Top" />
<RadioButton Content="3" Height="16" HorizontalAlignment="Left" Margin="10,89,0,0" Name="status3" VerticalAlignment="Top" />
<RadioButton Content="4" Height="16" HorizontalAlignment="Left" Margin="10,111,0,0" Name="status4" VerticalAlignment="Top" />
</GroupBox>
上面写着:
错误1对象"GroupBox"已经有一个子对象,不能添加"RadioButton"。"群盒"只能接受一个孩子。
最后三个RadioButtons
说:
属性'Content'被设置了不止一次。
我的GroupBox
怎么了?此外,在我的代码中,我想访问被检查的RadioButton
(最好是作为int
)。我该怎么做呢?我试着在谷歌上搜索,发现了很多结果,但我一个也看不懂。
GroupBox
只能保存1项,因此多次设置GroupBox
的Content
属性时会出现错误。
因此,将其设置为布局项,然后将 RadioButton
s放入其中。现在,您设置一次Content
,即StackPanel
,并且布局项可以容纳许多子项-> RadioButton
s。
<GroupBox x:Name="radioButtons">
<StackPanel>
<RadioButton Name="status1"
Height="16"
Margin="10,45,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="1" />
<RadioButton Name="status2"
Height="16"
Margin="10,67,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="2" />
<RadioButton Name="status3"
Height="16"
Margin="10,89,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="3" />
<RadioButton Name="status4"
Height="16"
Margin="10,111,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="4" />
</StackPanel>
</GroupBox>
至于你的第二个问题,Christian Mosers WPF Tutorial.net有一个不错的样本。如果你不理解它,你也许应该先看看Binding
和Converter
主题。
以非MVVM方式检查RadioButton
时通知的一种非常粗糙的方法:
private void RadioButtonChecked(object sender, RoutedEventArgs e) {
var radioButton = sender as RadioButton;
if (radioButton == null)
return;
int intIndex = Convert.ToInt32(radioButton.Content.ToString());
MessageBox.Show(intIndex.ToString(CultureInfo.InvariantCulture));
}
然后,在xaml中的每个RadioButton
s中,添加Checked="RadioButtonChecked"
.
如果你想要很多元素或控件,那么你必须把它们放在布局容器中。
- 网格
- StackPanel
- DockPanel
- WrapPanel
- 等等…