单击按钮后按钮未禁用

时间:2019-11-06 17:01:13

标签: c# xaml button onclick

我创建了一个按钮,用于将文本框值重置为默认值,如下所示:

<Button x:Name="DefaultButton"
        Grid.Row="0"
        Grid.Column="3"
        Click="OnDefaultClicked"> 

这是Click方法:

private void OnDefaultClicked(object sender, RoutedEventArgs e)
{
    DefaultButton.IsEnabled = false;
    displayedData = defaultData;

    //rest of method code

}

单击按钮时,数据会自动重置为其默认值,但是直到再次单击该按钮时,该按钮才会被禁用。我不确定为什么会这样。

我可以在xaml代码中实现IsEnabled属性,并将其绑定到一种方法,该方法根据displayedData的值确定是否应启用该按钮,但是由于该按钮未重新在我的应用程序中的其他任何地方启用/禁用或用于任何其他目的,这似乎有点矫kill过正……据我所知,Click事件应该能够单独处理。无论如何,我的主要问题是,我只是不明白为什么在第二次单击之前不会禁用按钮,因为OnDefaultClicked方法明确指出应在单击时禁用它。

我想念什么吗?

1 个答案:

答案 0 :(得分:0)

原来问题出在我的其余代码中。上面发布的代码片段效果很好。我意识到我已经创建了一种方法,该方法可以在框中的文本更改时重新启用按钮,以允许用户在进行更改后再次将其重置为默认值。因此,当单击默认按钮时,框中的文本将更改,因此将触发OnTextChanged和OnDefaultClicked方法,这将导致同时启用和禁用按钮。

这是我的固定方法:

private bool DefaultClicked;
private void OnDefaultClicked(object sender, RoutedEventArgs e)
{
    DefaultButton.IsEnabled = false;
    DefaultClicked = true;
    displayedData = defaultData;

    //rest of method code

}
private void OnTextChanged(object sender, RoutedEventArgs e)
{
    if(!DefaultClicked)
    {
        DefaultButton.IsEnabled = true;
    }
    DefaultClicked = false;

    //rest of method code
}