【发布时间】:2014-09-24 11:16:47
【问题描述】:
尝试为我的单选按钮设置默认值,但被标记为 NullReferenceException 错误。
private void rbImperial_Checked(object sender, RoutedEventArgs e)
{
txtInches.Visibility = Visibility.Visible;
lblInches.Visibility = Visibility.Visible;
lblWeight.Text = "lbs";
lblHeight.Text = "Feet";
}
private void rbMetric_Checked(object sender, RoutedEventArgs e)
{
lblHeight.Text = "cm";
txtInches.Visibility = Visibility.Collapsed;
lblInches.Visibility = Visibility.Collapsed;
lblWeight.Text = "kg";
}
rbImperial 是应选中的默认单选按钮。
XAML:
<RadioButton x:Name="rbMetric" Content="Metric" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="132,244,0,0" Checked="rbMetric_Checked" ClickMode="Press"/>
<RadioButton x:Name="rbImperial" Content="Imperial" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="132,199,0,0" Checked="rbImperial_Checked" IsChecked="True" ClickMode="Press" />
如果我没有将 rbImperial Checked 属性设置为 True 以使其默认被选中,它运行得非常好。
我错过了什么?
我尝试运行它时遇到的问题。
【问题讨论】:
-
这不是我们在 WPF 应用程序中做事的方式。您无需订阅单选按钮选中事件并在代码隐藏或事件处理程序中设置其他 UI 元素的属性。了解数据绑定、MVVM 和触发器...
-
我模拟了你的例子,没有遇到任何问题。您确定它不是提供空引用的其他东西吗? Checked 事件处理程序中的某些内容可能是因为将默认设置为选中会使处理程序运行。
-
乔希,手头肯定有更大的问题。就单选按钮而言,您编写的代码不应给您任何
Null异常。您能否向我们提供完整的错误信息(消息和所有内容)。但是,正如您已经看到的那样,采用代码隐藏路线是有问题的,尤其是当您在代码方面取得进一步进展时。 @DeanK。观察到您可能应该研究数据绑定和 MVVM ......我必须同意。相信我,当我是新手时,我选择了你的路线,因为它很容易,但我很快就放弃了。