如何使按钮永久禁用

本文关键字:何使 按钮 | 更新日期: 2023-09-27 18:17:53

我正在为Sharepoint 2010开发一个Silverlight web部件。我在数据网格中有一个按钮,如下所示

<sdk:DataGridTemplateColumn Width="80" >
   <sdk:DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
         <Button x:Name="MarkBilledButton" Content="Mark Billed"  VerticalAlignment="Center" HorizontalAlignment="Center" HorizontalContentAlignment="Center" Click="MarkBilledButton_Click" />
      </DataTemplate>
   </sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
private void MarkBilledButton_Click(object sender, RoutedEventArgs e)
{
   Button btn = sender as Button;
   //string buttonContent = btn.Content.ToString();
   MedwaiverTimeLog timeLogObj = btn.DataContext as MedwaiverTimeLog;
   MedwaiverViewModel MedwaiverViewModelObj = new MedwaiverViewModel();
   MedwaiverViewModelObj.ChangeBillingStatus(timeLogObj.ListItemId, "Billed");
   btn.IsEnabled = false;
}

我想让按钮禁用按钮点击,这是发生在按钮点击事件。但当我点击禁用按钮时,它就被启用了。我不想启用按钮,一旦它被禁用。如何做到这一点?你能告诉我哪里做错了吗?或者你能提供给我任何代码以便我解决以上问题吗?

如何使按钮永久禁用

我认为你可以通过将Button的IsEnable属性绑定到你的ModelView中的布尔属性来实现这一点。在MarkBilledButton_Click上,将该属性设置为FALSE,即使控件刷新发生,由于内部WPF框架消息泵送,或由于一些编程(这里不可见),按钮的IsEnable属性将从ModelView读取。

既然你想让按钮在"禁用"之后可以点击,你可能不应该禁用按钮,因为这会使它不可点击。似乎你想让它看起来是禁用的,但仍然是启用的。

我的建议是当用户单击按钮时修改按钮的样式,而不是启用/禁用它,这样按钮看起来和感觉禁用,但仍然报告单击事件。

例如,您可以更改按钮的背景色/前景色。

也许您可以将代码放入IF语句中?

IF (  btn.IsEnabled = True )
{
   Button btn = sender as Button;
   //string buttonContent = btn.Content.ToString();
   MedwaiverTimeLog timeLogObj = btn.DataContext as MedwaiverTimeLog;
   MedwaiverViewModel MedwaiverViewModelObj = new MedwaiverViewModel();
   MedwaiverViewModelObj.ChangeBillingStatus(timeLogObj.ListItemId, "Billed");
   btn.IsEnabled = false;
}

可能有一个更好的解决方案,但这是我想到的一些快速和简单的东西。我真的不知道为什么按钮是那样的