繁体   English   中英

如何使按钮永久禁用?

[英]How to make the button disable permanently?

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

我希望按钮单击事件发生时使按钮禁用。 但是,当我单击该禁用按钮时,它将被启用。 禁用按钮后,我不想启用它。 这个怎么做? 您能告诉我我要去哪里了吗? 还是可以请您提供任何代码以便我解决上述问题?

由于您希望按钮在“禁用”之后可以单击,因此您可能不应该禁用按钮,因为那样会使按钮不可单击。 似乎您想使它看起来已禁用但仍处于启用状态。

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

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

我想你可以通过引入巴顿的结合达到这一IsEnable你的财产的布尔属性ModelView MarkBilledButton_Click ,将该属性设置为FALSE ,即使由于内部WPF框架消息泵送或某些编程(在此处不可见)而刷新控件时,也将从ModelView读取按钮的IsEnable属性。

希望这可以帮助。

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

可能会有更好的解决方案,但这是我想到的快速简便的方法。 我真的不知道为什么按钮会像这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM