Колонка кнопки «Сетка данных WPF» отключена - PullRequest
3 голосов
/ 11 марта 2009

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

<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. Можно ли вообще отключить кнопку?

Ответы [ 3 ]

2 голосов
/ 22 марта 2009

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

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

0 голосов
/ 08 января 2016
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> 
0 голосов
/ 22 марта 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...