selecteditems - wpf data grid
WPF DataGrid Button Column Disable (3)
¿Es posible desactivar un botón en un DataGridTemplateColumn? Tengo una DataGridTemplate de la siguiente manera:
<toolkit:DataGridTemplateColumn Header="Timer" Width="50">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Start" Click="Button_Click" CommandParameter="{Binding}" />
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>
El objetivo del botón es iniciar un temporizador grabado en el objeto asociado con esa fila. Mi código de temporizador funciona bien, pero también me gustaría desactivar los botones de cada dos filas para que solo pueda ejecutar un temporizador.
solía
WorkItemGrid.Columns[WorkItemGrid.Columns.Count - 1].GetCellContent(item).IsEnabled = false
para deshabilitarlo y todos los botones aparecen correctamente deshabilitados, pero si hace clic en el botón dos veces se volverá a activar y le permitirá hacer clic en él por tercera vez y desencadenar el evento Click. ¿Es posible deshabilitar realmente el botón?
Si es aceptable desactivar el botón que se hizo clic además de los demás, vincularé Button.IsEnabled
a una propiedad que se establece en false
una vez que se inicie el temporizador, y luego lo cambiaré a true
una vez que la operación haya finalizado .
Si eso no es aceptable, entonces no estoy seguro de si hay una manera de hacerlo, ya que por definición, la plantilla se usa para crear los controles en cada fila. Bueno, podrías buscar en el árbol visual todos los otros botones, pero eso no parece una buena cosa para hacer (sin mencionar que podría ser lento para una gran cantidad de datos).
Tendría el objetivo de que Datagrid exponga una propiedad booleana "IsEnabled" a la que puedo vincular el botón. Siempre que se llame al controlador, simplemente obtenga el otro objeto de su colección original y pídales que cambien su propiedad a falso. Esto desactivará automáticamente los otros botones.
Si no tiene el control de la clase "temporizador", puede envolverlo en su propia clase antes de enlazar la cuadrícula con la colección de sus objetos.
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>