代码之家  ›  专栏  ›  技术社区  ›  Stephan

WPF数据报按钮列禁用

  •  3
  • Stephan  · 技术社区  · 16 年前

    是否可以禁用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

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

    3 回复  |  直到 9 年前
        1
  •  2
  •   Denis Troller    16 年前

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

    如果不在“Timer”类的控制范围内,则可以在将网格数据绑定到对象集合之前将其包装在自己的类中。

        2
  •  0
  •   Andy    16 年前

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

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

        3
  •  0
  •   SANDEEP    9 年前
    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>