我创建了一个按钮,用于将文本框值重置为默认值,如下所示:
<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
方法明确指出应在单击时禁用它。
我想念什么吗?
答案 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
}