2009-03-11 7 views
3

Est-il possible de désactiver un bouton dans un DataGridTemplateColumn? J'ai DataGridTemplate comme suit:WPF DataGrid Bouton Colonne Désactiver

<toolkit:DataGridTemplateColumn Header="Timer" Width="50"> 
        <toolkit:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Button Content="Start" Click="Button_Click" CommandParameter="{Binding}" /> 
         </DataTemplate> 
        </toolkit:DataGridTemplateColumn.CellTemplate> 
       </toolkit:DataGridTemplateColumn> 

Le but du bouton est de commencer une minuterie enregistrée à l'objet associé à cette ligne. Mon code de minuterie fonctionne bien, mais j'aimerais également désactiver les boutons de tous les autres rangs de sorte que vous ne pouvez avoir qu'un seul minuteur en marche.

J'utilisé

WorkItemGrid.Columns[WorkItemGrid.Columns.Count - 1].GetCellContent(item).IsEnabled = false

pour le désactiver et tous les boutons apparaissent correctement désactivé mais si vous cliquez sur le bouton deux fois il sera réactivez et vous permet de cliquer sur une troisième fois et déclencher Click un événement. Est-il possible de désactiver le bouton?

Répondre

2

Je voudrais que l'objet Datagrid soit lié pour exposer une propriété booléenne "IsEnabled" à laquelle je peux lier le bouton. Chaque fois que le gestionnaire est appelé, récupérez simplement l'autre objet de votre collection d'origine et faites en changer la propriété à false. Cela désactivera automatiquement les autres boutons. Si vous n'avez pas le contrôle de la classe "timer", vous pouvez l'envelopper dans votre propre classe avant de lier la grille à la collection de vos objets.

+0

son ne fonctionne pas dans mon cas. – SANDEEP

0

S'il est acceptable de désactiver le bouton qui a été cliqué en plus des autres, alors je lierait Button.IsEnabled à une propriété qui est définie sur false une fois que le chronomètre démarre, puis changer de nouveau à true une fois l'opération avoir fini.

Si ce n'est pas acceptable, alors je ne suis pas sûr s'il y a un moyen de le faire, puisque par définition le modèle est utilisé pour créer les contrôles dans chaque ligne. Eh bien, vous pourrait chercher l'arborescence visuelle pour tous les autres boutons, mais cela ne semble pas être une bonne chose à faire (sans compter que cela pourrait être lent pour une grande quantité de données).

+0

Je le pense aussi, mais je dois pouvoir quitter le bouton sur lequel j'ai cliqué. Le bouton qui a été cliqué doit être changé pour dire quelque chose de différent et le reste des boutons doit être désactivé. – Stephan

0
its not working in my case. 

             <DataGridTemplateColumn Width="70" Header="Refund" > 
          <DataGridTemplateColumn.CellTemplate> 
           <DataTemplate> 
            <Button x:Name="btnRefundGame" IsEnabled="{Binding RESUND_STATUS}" CommandParameter="{Binding Path=IDEN_LOGID}" Content="Refund" Click="btnRefundGame_Click" ></Button> 
           </DataTemplate> 
          </DataGridTemplateColumn.CellTemplate> 
         </DataGridTemplateColumn> 
Questions connexes