Siguiendo con WindowsFormsHost WPF

Siguiendo con el tema de WindowsFormsHost en WPF, esta vez quize hacer una sencilla aplicacionn para hacer test con conexion a DB.

Primero cargo datos en un Listbox para que me muestre que examen hay disponible.

    <ListBox x:Name="lb"
                HorizontalAlignment="Left"
                ItemsSource="{Binding Path=QuizContactData}"
                ItemTemplate  ="{StaticResource QuizItemTemplate}"
                ItemContainerStyle="{StaticResource liStyle}"
                IsSynchronizedWithCurrentItem="True"
                Background="Honeydew"
      
                Grid.Row="1" 
                Grid.Column="0" Grid.ColumnSpan="3"/>

 

   1: private void OnInit(object sender, EventArgs e)
   2:         {
   3:             //Conexion a la Bd
   4:             string connectionString = @"Initial Catalog=Exam;Data Source=localhost;Integrated Security=SSPI;";
   5:             DataSet dataSet = new DataSet();
   6:             using (SqlConnection connection = new SqlConnection(connectionString))
   7:             {
   8:                 SqlDataAdapter adapter = new SqlDataAdapter();
   9:                 adapter.SelectCommand = new SqlCommand(
  10:                     "SELECT * FROM Exam ", connection);
  11:                 adapter.Fill(dataSet, "QuizContactData");
  12:             }
  13:             
  14:             lb.DataContext = dataSet;
  15:             
  16:         }

Para la aplicacion voy a usar un panel y un radiobutton de windows form y los voy a agregar al xalm por codigo.

   1: System.Windows.Forms.Panel wpanel = new System.Windows.Forms.Panel();
   2: wpanel.AutoSize = true;                      
   3: wpanel.Controls.Clear();

el panel le coloco la propiedad de AutoSize ya que si no tendremos problemas con el propio panel para visualizar el radiobutton.

   1: System.Windows.Forms.RadioButton rb = new System.Windows.Forms.RadioButton();
   2:                         
   3: rb.Text = r.GetString(1);
   4: rb.Tag = r.GetInt32(0);
   5: wpanel.Controls.Add(rb);
   6:  
   7:  
   8: rb.CheckedChanged += new EventHandler(rb_CheckedChanged);
   9:  
  10: rb.Location = new System.Drawing.Point(0, 32 * c);
  11: if ((int)rb.Tag == selectedAnswers[CurrentAsk])
  12:     rb.Checked = true;
  13: host.Child = wpanel;

como podra ver el radiobutton en la propiedad location, tengo que indentificarlo como System.Drawing.Point, ya que si solamente le digo Point, lo toma de windows forms y hay problema al compilarlo por incompatibilidad del Point. Por supuesto las imagenes.

WP1

WP2

WP3

 

 

Bueno eso es todo. Espero les sirva.

Enterprise Library 3.1 – VS2008

Sigo trabajando con Web Client Software Factory v2.0, tambien instale Enterprise Library 3.1 – May 2007 . la forma facil de configurar en nuestra aplicacion cualquier opcion de EnterPrise Library es desplegar las opciones y editar el archivo. pero esto en VS2008 no funciona.

VS2005

SF4  

VS2008

SF1

Hay que esperar la siguiente version de Enterprise Library para que aparescan estas opciones.

Probando Search Bundle – Web Client Software Factory v2.0

Hola, otra vez por aquí.


Yo comentaba de Web Client Software Factory v2.0 y una de sus features. Pero no me contube y lo probre en una sencilla aplicacion con acceso a datos, ya que en el ejemplo lo hacen con un archivo XML. En este ejemplo lo hare con Nortwind pues para probar.


Si ya an usado Web Client Software Factory v2.0 se habran dado cuenta que no funciona para VS 2005, por tanto hay que compilarlo en un VS2008, para que genere el asembly y poder usarlo en nuestra aplicaciones normales desarrollados con VS2008, ya que se lo usan en las desarrolladas con VS2005 generara un error con assembly=«System.Web.Extensions, Version=3.5.0.0, Basicamente es por que en VS2005 usa la version 1.1……. y bueno crear conflictos, este assembly es el encarcado de manejar el entorno AJAX.


Primero hay que vincular el assembly necesario para trabajar.


SF3


SF2 


le indicamos al control de RealTimeSearch que monitore lo que ocurra con el UpdatePanel para hacer los respectivos cambios.

 <asp:TextBox ID=»CompanyNameTextBox» runat=»server»
OnTextChanged=»CompanyNameTextBox_TextChanged»>
 </asp:TextBox><br />

<cc1:RealTimeSearchMonitor ID=»CustomerRealTimeSearchMonitor»
runat=»server» AssociatedUpdatePanelID=»UpdatePanel1″ Interval=»700″>
<ControlsToMonitor>
<cc1:ControlMonitorParameter TargetID=»CompanyNameTextBox»></cc1:ControlMonitorParameter>
</ControlsToMonitor>
</cc1:RealTimeSearchMonitor>
En el evento TextChange del Texbox ejecutamos la siguiente instruccion.
protected void CompanyNameTextBox_TextChanged(object sender, EventArgs e)
{
GridView1.DataSource =

CustomerDataSource.GetCustomers(CompanyNameTextBox.Text);

GridView1.DataBind();

}

y aqui tenemos  lo necesario para la busqueda dentro del campo elejido.
  
public static IDataReader GetCustomers(string prefixText)
{

Database db = DatabaseFactory.CreateDatabase();
string sql = null;
if (string.IsNullOrEmpty(prefixText))
sql = «SELECT CompanyName, ContactName, Address, City FROM Customers»;
else
sql = «SELECT CompanyName, ContactName, Address, City FROM Customers WHERE CompanyName LIKE ‘»
+ prefixText + «%'»;
return db.ExecuteReader(CommandType.Text, sql);

}


Recuerden que para hacer la busqueda el GridView debe contener datos y para llenar el GridView lo deben de hacer por otro metodo que no sea un enlazac a datos ya que generara problemes cuando hagan el GridView1.DataBind();.


les dejo la imagen de como quedaria.


SF$


Codigo

Web Client Software Factory v2.0 – Search Bundle

Hola, gente.

Estaba revisando Codeplex y me encontre con un proyecto intersante Web Client Software Factory v2.0.

Web Client Software Factory (WCSF) proporciona un conjunto de orientaciones para arquitectos y desarrolladores de aplicaciones web. Lo bueno de esta herrramienta es que se integra con Visual Studio.

Es una suite con diferente tipos de componentes con los cuales podemos usar en nuestras aplicaciones, dandoles una mejor funcionalidad y mejor entorno, ya que usa la progamación en capas para separar la logica de negocio, el acceso a datos y el front end.

Empieza dando una visita por aquí para enterarte de como hacer para desarrollar proyectos con esa herramienta.

Unos de los componentes que mas me gusta es el Real-Time Search, un componente con la caracteristica de que actualiza un GridView a medida de que va encontrando coincidencias en nuestra BD o Aplicacion. Les dejo unos link interesante.

SearchResultsDisplayedAsYouTypeInTheInputControls

Search Bundle Screencast – Web Client Software Factory v2.0

Search Bundle Tutorial – Real-Time ASP.NET AJAX Search Functionality

Espero os guste.

Componente Windows Forms 2.0 en WPF

Hola gente de Geeks.MS. Eh estado trabajando mucho con WPF y me han salido ligeros inconvientes.

Hoy quiero comentarles sobre algo que a muchos nos ha pasado desarrollando aplicaciones para WPF. Como sabran una de las diferencias principales entre un control de Windows Forms 2.0 y Wpf, es que los control de Windows Form 2.0 se hereda de la clase Control (Sytem.Windows.Forms.Control, que ah su ves se hereda System.Windows.Forms.dll) y en WPF se hereda de la clase UIElement (System.Windows.UIElement, de la librería WindowsBase.dll).

Muchos diran para que quiero controles de Windows Form 2.0 en WPF, basicamente es por algunos de los controles de WPF no tienen todas las funcionalidades de los controles de Windows Forms 2.0, y tenemos que valernos de un poco de programación para que se comporten igual.

Para hacer esta interoperabilidad tenemos que hacer uso del componente WindowsFormsIntegration.dll, Basicamente tenemos que crear un proyecto de tipo libreria y crear un control de usuario para integrarlo en el XAML de WPF.

Primero tenemos que agregar las referencias necesarias, WindowsFormsIntegration.dll y la de nuestro proyecto donde hicimos nuestro control de usuario.

libreria

Seguidamente tenemos que importar el espacio de nombres de el control de usuario.

xmlns:winform="clr-namespace:WinFormControl;assembly=WinFormControl" 

<WindowsFormsHost Height="25" Margin="0,0,160,0" VerticalAlignment="Top">
    <winform:WinFormControl x:Name="winControl" CustomEvent="winControl_CustomEvent"  />
</WindowsFormsHost>

Ejecucion

Hasta aqui todo bien con la integración, pero quisiera saber como hacer esto en tiempo de ejecución.

Bueno espero que les guste y les sirva.

Codigo

Por fin Agile Project Management with Scrum

Hola, como estan.

Bueno, solo queria contar que hace poco me acaba de llegar este precioso libro Agile Project Management with Scrum de nuestro querido Ken Schwaber.

He estado ojeando el libro y se trata de historias del propio Ken de cuando estaba empezando con esta metodologia. Terminare de leerlo y comentare mas de este libro.

scrum

Nota: Conseguir este libro en Colombia es todo un proceso. Por eso mi felicidad de que por fin llego.

Sludos.

Rduarte.