Отключить столбец кнопки WPF DataGrid

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


person Stephan    schedule 11.03.2009    source источник


Ответы (2)


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

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

person Denis Troller    schedule 22.03.2009

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

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

person Andy    schedule 21.03.2009
comment
Я тоже так думал, но мне нужно иметь возможность оставить нажатую кнопку включенной. Нажатую кнопку нужно изменить, чтобы она говорила что-то другое, а остальные кнопки нужно отключить. - person Stephan; 23.03.2009