0

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

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

4

3 回答 3

0

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

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

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

于 2011-12-14T08:01:44.847 回答
0

我认为您可以通过将 Button 的IsEnable属性绑定到ModelView. 在 上MarkBilledButton_Click,将该属性设置为FALSE,即使控件发生刷新,由于内部 WPF 框架消息泵送,或者由于某些编程(此处不可见),IsEnable按钮的属性也会从 读取ModelView

希望这可以帮助。

于 2011-12-14T08:02:38.257 回答
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;
}

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

于 2011-12-14T08:03:46.107 回答