[英]Check if each radiobutton group has one radiobutton selected/checked
我目前正在开发WPF应用程序。 如果用户单击一个按钮,则程序应检查是否每个组都选中了一个单选按钮。 这是XAML的摘录:
<Border Grid.Row="3" Grid.Column="1" BorderBrush="Black" BorderThickness="2" Margin="78,0,0,0" Background="LightGray">
<WrapPanel x:Name="wrpnlElektro" Height="65" Margin="0,0,0,-12" Background="LightGray" Grid.Column="1" Grid.Row="2" Grid.RowSpan="2" VerticalAlignment="Top">
<Label x:Name="lblElektro" Content="Elektro" FontWeight="Bold" Margin="20,15,0,15"/>
<Label x:Name="lblElektroBauseitig" Content="bauseitig" Margin="50,15,0,15" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<RadioButton GroupName="Elektro" x:Name="rbElektroBauseitig" Margin="20,22,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblElektroLuxhaus" Content="Luxhaus" Margin="40,15,0,15" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<RadioButton GroupName="Elektro" x:Name="rbElektroLuxhaus" Margin="20,22,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"/>
</WrapPanel>
</Border>
<Border Grid.Row="4" Grid.Column="1" BorderBrush="Black" BorderThickness="2" Margin="78,0,0,0" Background="LightGray">
<WrapPanel x:Name="wrpnlSAT" Height="60" Margin="0,0,0,0" Background="LightGray" VerticalAlignment="Top">
<Label x:Name="lblSAT" Content="SAT-Anlage" FontWeight="Bold" Margin="20,15,0,15"/>
<Label x:Name="lblSATJa" Content="Ja" Margin="61,15,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<RadioButton GroupName="SAT" x:Name="rbSATJa" Margin="20,22,0,22"/>
<Label x:Name="lblSATVorb" Content="Vorber." Margin="44,15,0,15" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<RadioButton GroupName="SAT" x:Name="rbSATVorb" Margin="20,22,0,22"/>
<Label x:Name="lblSATNein" Content="Nein" Margin="40,15,0,15" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<RadioButton GroupName="SAT" x:Name="rbSATNein" Margin="20,22,0,22"/>
</WrapPanel>
</Border>
<Border Grid.Row="5" Grid.Column="1" BorderBrush="Black" BorderThickness="2" Margin="78,0,0,0" Background="LightGray">
<WrapPanel x:Name="wrpnlPV" Margin="0,0,0,-8" Background="LightGray">
<Label x:Name="lblPV" Content="PV-Anlage" FontWeight="Bold" Margin="20,15,0,15"/>
<Label x:Name="lblPVJa" Content="Ja" Margin="68,15,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<RadioButton GroupName="PV" x:Name="rbPVJa" Margin="20,22,0,22" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblPVVorb" Content="Vorber." Margin="44,15,0,15" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<RadioButton GroupName="PV" x:Name="rbPVVorb" Margin="20,22,0,22" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblPVNein" Content="Nein" Margin="40,15,0,15" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<RadioButton GroupName="PV" x:Name="rbPVNein" Margin="20,22,0,22" HorizontalAlignment="Left" VerticalAlignment="Top"/>
</WrapPanel>
</Border>
因此,基本上我是说:“用户,如果您没有为每个“单选按钮容器”选择一个选项,则会出现一个带有警告的MessageBox。
如何在XAML或后面的代码中执行此操作? 如果可能的话,请给我一个代码示例,而不是指导性注释。 非常感谢你!
默认情况下,为每个组中的第一个RadioButton设置IsChecked=true
。 不能从UI中取消选中它,然后就不需要验证。
或者,检查每个组:
bool success =
(rbElektroBauseitig.IsChecked == true || rbElektroLuxhaus.IsChecked == true) &&
(rbSATJa.IsChecked == true || rbSATVorb.IsChecked == true || rbSATVorb.IsChecked == true) &&
(rbPVJa.IsChecked == true || rbPVVorb.IsChecked == true || rbPVNein.IsChecked == true);
if (!success)
MessageBox.Show("Dear User, you didn't make selection");
另外,您可以使用Linq
您将为每个容器创建一个语句。 如果返回的变量为null,则没有任何选择。 这还将返回RadioButton,包括所选项目的名称。
var ElektroGroup = wrpnlElektro.Children.OfType<RadioButton>().FirstOrDefault(x => x.IsChecked.Value);
if(ElektroGroup == null || ...any other group == null...)
{
//TODO nothing found
return;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.