我正在为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;
}
我希望按钮单击事件时按钮单击时禁用按钮。但是,当我点击该禁用按钮时,它会启用。一旦禁用,我不想启用该按钮。这该怎么做?你能告诉我哪里出错了吗?或者,您可以提供任何代码,以便我可以解决上述问题吗?
答案 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;
}
可能有一个更好的解决方案,但这是我想到的快速和简单的事情。 我不知道为什么按钮表现得那样。