viernes, 28 de diciembre de 2012

EditSettings de una celda en un grid con Scroll

Para crear un scroll dentro de una celda de un grid, cuando la información es demasiado grande y no se puede visualizar, podemos realizar lo siguiente:


<dxg:GridColumn Name="colDetObservation" FieldName="Observations" FixedWidth="True" Fixed="Right" MinWidth="100">
   <dxg:GridColumn.EditSettings>
         <dxe:TextEditSettings Name="meDetObservation"/>
    </dxg:GridColumn.EditSettings>
    <dxg:GridColumn.CellTemplate>
       <DataTemplate>
           <dxe:TextEdit Name="PART_Editor" MaxLength="4000" MaxHeight="30" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto"/>
       </DataTemplate>
    </dxg:GridColumn.CellTemplate>
</dxg:GridColumn>

viernes, 21 de diciembre de 2012

Desactivar Movimiento del Ratón en un combobox

Cuando se selecciona algun valor en un combobox y luego se mueve la rueda del raton teniendo el foco en el combo, se cambia el valor seleccionado anteriormente.
Para desactivar esta función, se desactiva el manejador en el evento PreviewMouseWheel.


private void combobox_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
e.Handled = true;
}

lunes, 3 de diciembre de 2012

Llamar una ventana Winform desde WPF

Hoy tuve un problema durante el proceso de desarrollo de un sistema en WPF y WinForms, sucede que el proyecto está hecho en WPF y eventualmente se utilizaron WinForms para su manejo pero la interoperabilidad no viene habilitada por defecto, es decir, al instanciar una clase de tipo WinForm desde el WPF y mostrarla con el método Show() no tengo la posibilidad de cambiar entre controles dentro del WinForm con la tecla TAB, lo que al mostrarlo con el método ShowDialog() me funciona perfectamente; ahora bien, hay una solución bastante sencilla pero que me ha costado unas cuantas horas de investigación y publico aquí la solución:

  • Agregar a las referencias del proyecto la libreria WindowsFormsIntegration, generalmente localizada en %ProgramFiles%\Reference Assemblies\Microsoft\Framework\v3.0\WindowsFormsIntegration.dll


  • Importar la librería dentro del proyecto WPF de la siguiente manera: Imports System.Windows.Forms.Integration


  • Después de llamar al WinForm con el método .Show(), habilitar la interoperabilidad de la siguiente manera:System.Windows.Forms.Integration.WindowsFormsHost.EnableWindowsFormsInterop()

Eso es todo, espero que a alguien le sea útil.

Nota. Si es un proyecto WinForm y se agrega un WPF y se quiere la interoperabilidad, lo unico que cambia es la manera de habilitarla, se hace de la siguiente forma: System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop()