问题是这样的,代码段如下
<RadioButton Name="RadioA" GroupName="hello" Canvas.Top="0" Canvas.Left="0" Checked="RadioButton_Checked" DataContext="0,0" IsChecked="True">(0,0)</RadioButton> <Button Name="myButton" Canvas.Left="100" Canvas.Top="100" Width="100" Height="70" Click="myButton_Click">
我设置了IsChecked为true,那么程序启动时就要执行
RadioButton_Checked这个事件,这个事件如下
1 private void RadioButton_Checked(object sender, RoutedEventArgs e) 2 { 3 4 myButton.RenderTransformOrigin = p; 5 }
那么,这个程序是要报错的,出错显示myButton为空,为什么会这样?是因为这样mybutton没初始出来?用winform测试了一下,没有这种问题,但是,winfrom貌似一开始不执行
RadioButton_CheckedChanged这个事件?这是wpf的bug么?
后来再研究了下,发现这样是可以避免mybutton为空这种错误的
在构造函数里来设置IsChecked属性
public MainWindow() { this.InitializeComponent(); // 在此点下面插入创建对象所需的代码。 RadioA.IsChecked = true; }
同样,winform里面这样设置,程序执行的时候,它又执行了
RadioButton_CheckedChanged这个事件。
彻底晕了,哪位朋友帮我想想,wpf里面,IsChecked那样设置为什么就要报错,谢谢啦
森栏