2009-03-11 15 views
3

Можно ли отключить кнопку в DataGridTemplateColumn? У меня есть DataGridTemplate следующим образом:Столбец кнопки DataGrid WPF Disable

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

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

Я использовал

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

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

ответ

2

У меня был бы объект, который Datagrid обязан выставлять логическое свойство IsEnabled, с которым я могу привязать кнопку. Всякий раз, когда вызывается обработчик, просто получите другой объект из вашей первоначальной коллекции и измените его свойство на false. Это автоматически отключит другие кнопки.

Если вы не контролируете класс «таймер», вы можете обернуть его в свой собственный класс, прежде чем привязывать сетку к коллекции ваших объектов.

+0

его не работает в моем случае. – SANDEEP

0

Если это приемлемо, чтобы отключить кнопку, которая была нажата в дополнение к другим, то я бы привязать Button.IsEnabled к свойству, которое устанавливается на false после запуска таймера, а затем изменить его обратно true раз операции закончил.

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

+0

Я, хотя это тоже, но мне нужно оставить кнопку, на которую была нажата кнопка включения. Щелкнувшаяся кнопка должна быть изменена, чтобы сказать что-то другое, и остальные кнопки должны быть отключены. – 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> 
Смежные вопросы