如何永久禁用该按钮?

时间:2011-12-14 07:39:37

标签: c# silverlight data-binding button client-object-model

我正在为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;
}

我希望按钮单击事件时按钮单击时禁用按钮。但是,当我点击该禁用按钮时,它会启用。一旦禁用,我不想启用该按钮。这该怎么做?你能告诉我哪里出错了吗?或者,您可以提供任何代码,以便我可以解决上述问题吗?

3 个答案:

答案 0 :(得分:0)

由于您希望在“禁用”按钮后可以单击该按钮,因此您可能不应该禁用该按钮,因为这将使其无法点击。看起来你想让它看起来已经禁用但仍然可以启用。

我的建议是,当用户点击按钮时,您可以修改按钮的样式,而不是启用/禁用该按钮的样式,这样按钮看起来就会被禁用但仍会报告点击事件。

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

答案 1 :(得分:0)

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

希望这有帮助。

答案 2 :(得分:0)

也许您可以将代码放入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;
}

可能有一个更好的解决方案,但这是我想到的快速和简单的事情。 我不知道为什么按钮表现得那样。