none
Problemas con DataGridTemplateColumn RRS feed

  • Pregunta

  • Hola, tengo mucho tiempo trabajando con VB.Net en Forms pero quise dar un brinco a WPF y me he topado con muchos problemas que de alguna manera he logrado solucionar investigando en el foro, el problema es que no he encontrado solucion a mi problema o no lo dejan muy en claro en otros foros o preguntas.

    En fin... Tengo un Datagrid en el formulario principal con el siguiente codigo .xaml:

    <DataGrid BeginningEdit="beginningEditDGMC" Name="dgMesaControl" HorizontalAlignment="Left" Height="407" VerticalAlignment="Top" Width="750" Margin="0,10,0,-0.225" AutoGenerateColumns="False" SelectionUnit="Cell">
    	<DataGrid.Columns>
    		<DataGridTextColumn Header="Usuario Anterior" Binding="{Binding usuarioAnterior}" />
    		<DataGridTemplateColumn Header="Acción" SortMemberPath="accion" >
    			<DataGridTemplateColumn.CellTemplate>
    				<DataTemplate DataType="DataGridCell">
    					<ComboBox Loaded="cbAccMC_Loaded" KeyDown="dgItm_KeyDown"  GotFocus="cellsHandler"
    							  IsEditable="True" Text="{Binding accion}"/>
    				</DataTemplate>
    			</DataGridTemplateColumn.CellTemplate>
    		</DataGridTemplateColumn>
    		<DataGridTemplateColumn Header="Fecha" SortMemberPath="fechaCreado">
    			<DataGridTemplateColumn.CellTemplate>
    				<DataTemplate>
    					<DatePicker SelectedDate="{Binding fechaCreado}" BorderThickness="0" />
    				</DataTemplate>
    			</DataGridTemplateColumn.CellTemplate>
    		</DataGridTemplateColumn>
    	</DataGrid.Columns>
    </DataGrid>

    El problema es con el DataGridTemplateColumn, me explico:

    Antes que nada y lo mas importante es que no puedo editar esas celdas si no doy click directamente en ellas (Supongo que es por los eventos del datagird, ya que en otra columna como DataGridTextColumn al presionar una tecla entra al modo de edicion) al presionar "Esc" no se cancelan los cambios y tampoco quita la seleccion de la celda (Supongo que por lo mismo).

    Necesito saber si hay alguna manera de enlazar o hacer compatibles los eventos generados por el DataGrid (BeginningEdit, CellEditEnding, etc) con el DataGridTemplateColumn, tengo entendido que no se enlazan por lo mismo de que son plantillas, pero me parece que debe de haber alguna manera de que funcionen los eventos con el datagrid pero realmente no tengo idea de como lograrlo.

    Para obtener los datos de la tabla utilizo el siguiente codigo en el archivo .xaml.vb

     dgMesaControl.ItemsSource = readerQueryT("declare @query as nvarchar(max) " + _
                                                        "set @query = dbo._selectedCols('sup') " + _
                                                        "exec sp_sqlexec @query").DefaultView

    El query es correcto, me entrega los datos que necesito, los muestra en la tabla, el objetivo de mostrar el codigo es solo con el fin de saber si esto influye en algo por minimo que sea.

    Al enlazar los datos todo funciona el unico problema es el hecho de que los eventos no funcionen con estas columnas, si agrego cualquier otra (DataGridTextColumn, DataGridComboBoxColumn, etc) si me genera el evento.

    Se que podria cambiar la plantilla con el comboBox por un DataGridComboBoxColumn pero seria el mismo problema con el DatePicker ademas que puedo personalizar comboBox usando el DataGridTemplateColumn.

    Espero que puedan ayudarme que la verdad no se por donde encontrar la solucion. Intenté trabajar con los eventos del combobox y del datepicker pero me sirven de nada si no puedo saber de que fila o columna estoy accesando ya que para saber esto tambien me ha complicado la existencia el DataGrid.

    De antemano, ¡gracias!

    jueves, 5 de marzo de 2015 18:45