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

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 に答える