WPF DataGrid按钮列禁用

时间:2009-03-11 16:25:10

标签: 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>

Button的目的是启动记录到与该行关联的对象的计时器。我的计时器代码工作正常但我也想禁用每隔一行的按钮,这样你就只能运行一个计时器。

我用过

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

禁用它并且所有按钮都正确显示为禁用但如果您单击按钮两次它将重新启用并允许您第三次单击它并触发Click事件。是否可以实际禁用按钮?

3 个答案:

答案 0 :(得分:2)

我希望Datagrid绑定的对象公开一个“IsEnabled”布尔属性,我可以将按钮绑定到。每当调用处理程序时,只需从原始集合中获取另一个对象,并让它们将其属性更改为false。这将自动禁用其他按钮。

如果您不能控制“计时器”类,则可以在将网格数据绑定到对象集合之前将其包装在您自己的类中。

答案 1 :(得分:0)

如果可以禁用除了其他按钮之外单击的按钮,那么我会将Button.IsEnabled绑定到定时器启动后设置为false的属性,然后更改一旦操作完成,它就会回到true

如果这是不可接受的,那么我不确定是否有办法做到这一点,因为根据定义,模板用于在每一行中创建控件。好吧,你可以在可视树中搜索所有其他按钮,但这似乎不是一件好事(更不用说它对于大量数据来说可能很慢)。

答案 2 :(得分: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>