2011-12-14 116 views
0

我開發2010 Sharepoint中Silverlight Web部件我有一個按鈕在DataGrid如下如何使按鈕永久禁用?

<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

我想你可以通過將Button的IsEnable屬性綁定到您的ModelView中的布爾屬性來實現此目的。在MarkBilledButton_Click上,將該屬性設置爲FALSE,並且即使刷新發生在控件上,由於內部WPF框架消息泵送,或者由於某些編程(這在此處不可見),IsEnable按鈕的屬性將從ModelView中讀取。

希望這會有所幫助。

0

由於您希望按鈕在「禁用」後可點擊,您應該不要禁用該按鈕,因爲這會使其無法點擊。看起來你想讓它看起來被禁用,但仍然被啓用。

我的建議是,當用戶點擊按鈕而不是啓用/禁用按鈕時,修改按鈕的樣式,以便該按鈕外觀和感覺被禁用,但仍會報告點擊事件。

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

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; 
} 

可能有更好的溶劑,但這是快速和容易的我想。 我不知道爲什麼按鈕的行爲如此。