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

Я разрабатываю веб-часть 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;
}

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


person Shailesh Jaiswal    schedule 14.12.2011    source источник


Ответы (3)


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

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

person Tigran    schedule 14.12.2011

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

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

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

person Erik Öjebo    schedule 14.12.2011

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

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

person Mike van Heugten    schedule 14.12.2011