Как сделать так, чтобы кнопка постоянно отключалась?

Я занимаюсь разработкой веб-части Silverlight для Sharepoint 2010. У меня есть кнопка в сетке данных следующим образом

<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 ответа

Решение

Я думаю, что вы можете достичь этого, введя привязку Баттона IsEnable свойство к логическому свойству в вашем ModelView, На MarkBilledButton_Clickустановите это свойство в FALSEи даже если произошло обновление элемента управления, из-за прокачки внутреннего фреймворка WPF или из-за некоторого программирования (которое здесь не видно), IsEnable свойство кнопки будет прочитано из ModelView,

Надеюсь это поможет.

Может быть, вы могли бы вставить код в оператор 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;
}

Там может быть лучшее решение, но я думаю, что это быстро и легко. Я действительно не знаю, почему кнопка ведет себя так.

Поскольку вы хотите, чтобы кнопка была кликабельной после ее "отключения", вам, вероятно, не следует отключать кнопку, так как это сделает ее неактивной. Похоже, вы хотите, чтобы он выглядел отключенным, но все же был включен.

Я предлагаю изменить стиль кнопки, когда пользователь нажимает на нее, а не включать / отключать ее, чтобы кнопка выглядела и чувствовала себя отключенной, но все же сообщала о событиях нажатия.

Например, вы можете изменить цвет фона / переднего плана кнопки.

Другие вопросы по тегам