RadioButton Checked事件

时间:2018-03-21 10:14:07

标签: c# wpf vb.net

以下是满足您测试需求的xaml代码。

<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="200" Width="325">
<Grid>
    <RadioButton x:Name="RadioButton1" IsChecked="True" GroupName="MyGroup" Content="Select" Margin="0,10,0,0"/>
    <RadioButton x:Name="RadioButton2" GroupName="MyGroup" Content="Select" Margin="0,30,0,0"/>
    <Menu x:Name="Menu1" HorizontalAlignment="Left" Margin="0,50,0,0">
        <MenuItem x:Name="MenuItem1" Header="Saving">
            <MenuItem x:Name="MenuItem2" Header="Save"/>
            <MenuItem x:Name="MenuItem3" Header="Don't save"/>
        </MenuItem>
    </Menu>
</Grid>
</Window>

以下代码效果很好。

Class MainWindow 
Private Sub RadioButton1_Unchecked(sender As Object, e As RoutedEventArgs) Handles RadioButton1.Unchecked
    Menu1.IsEnabled = False
End Sub
End Class

以下代码正在运行。你知道为什么吗?

Class MainWindow 
Private Sub RadioButton1_Checked(sender As Object, e As RoutedEventArgs) Handles RadioButton1.Checked
    Menu1.IsEnabled = True
End Sub
End Class

错误图片:

enter image description here

1 个答案:

答案 0 :(得分:0)

因为RadioButton节点位于Menu节点之上。 Checked事件将在Menu1创建之前发生。 您必须检查Menu1不是null

if (null != Menu1)
    Menu1.IsEnabled = true;

IsEnabled="True"放置到Menu节点以获取默认状态。

<Menu x:Name="Menu1" IsEnabled="True" HorizontalAlignment="Left" Margin="0,50,0,0">