El código para mostrar la ventana se agrega en el evento clic del botón:
private void
Boton_Click(object sender, System.Windows.Input.ExecutedRoutedEventArgs
e)
{
try
{
Dictionary<string,
string> paramUserControl = new Dictionary<string, string>();
paramUserControl.Add("unParametro");
//Instanciamos el
control wpf que va a mostrar la información.
UCExample u = new UCExample ();
u.SetContext(paramStateTreatment);
//Instanciamos la ventana
contenedora del control
Popup popup = new Popup()
{
Child = u,
AllowsTransparency = true,
StaysOpen = true,
IsOpen = false,
PlacementTarget =
((System.Windows.Controls.Control)(e.OriginalSource)),
Placement =
PlacementMode.Left
};
//Binding para setear la
propiedad "Width" del contenedor con la ventana de la información
Binding widthBinding = new
Binding("Width") { Mode = BindingMode.OneWay, Source = popup };
((FrameworkElement)u).SetBinding(WidthProperty, widthBinding);
//Le damos un tiempo para mostrar la ventana
DispatcherTimer activeTimer =
new DispatcherTimer { Interval = new TimeSpan(0,0,7) };
activeTimer.Tick += (obj, ea)
=> ClosePopup(popup);
activeTimer.Start();
popup.IsOpen = true;
return;
}
catch (Exception)
{
throw;
}
}
Dentro de una ventana popup puede ir cualquier template. El código del usercontrol que va a ir dentro de la ventana popup, es el siguiente:
XAML
<UserControl
x:Class="Servinte.Clinic.Controls.UCSeeTreatmentStatus"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Height="Auto" Width="Auto">
<UserControl.Resources>
<Style TargetType="Label"
x:Key="lblControl">
<Setter
Property="HorizontalContentAlignment" Value="Left"/>
</Style>
<Style TargetType="TextBlock"
x:Key="txtbControl">
<Setter
Property="HorizontalAlignment" Value="Left"/>
<Setter
Property="VerticalAlignment" Value="Center"/>
</Style>
</UserControl.Resources>
<Border Background="White" BorderBrush="Black"
BorderThickness="2">
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition
Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition
Height="Auto"/>
<RowDefinition
Height="Auto"/>
<RowDefinition
Height="Auto"/>
<RowDefinition
Height="Auto"/>
</Grid.RowDefinitions>
<Label Content="Nombre " Style="{StaticResource lblControl}"/>
<TextBlock
Grid.Column="1" Name="txtbName"
Style="{StaticResource txtbControl}"/>
<Label
Grid.Row="1" Content="Apellidos "
Style="{StaticResource lblControl}"/>
<TextBlock Grid.Row="1" Grid.Column="1"
Name="txtbLastName" Style="{StaticResource
txtbControl}"/>
<Label
Grid.Row="2" Content="Profesión "
Style="{StaticResource lblControl}"/>
<TextBlock Grid.Row="2" Grid.Column="1"
Name="txtbProfession" Style="{StaticResource
txtbControl}"/>
<Label
Grid.Row="3" Content="Fecha Nacimiento "
Style="{StaticResource lblControl}"/>
<TextBlock Grid.Row="3" Grid.Column="1" Name="txtbDateBorn"
Style="{StaticResource txtbControl}"/>
</Grid>
</Border>
</UserControl>
C#
using System.Collections.Generic;
using System.Windows.Controls;
namespace MyNamespace.Controls
{
/// <summary>
/// Interaction logic for UCExample.xaml
/// </summary>
public partial class UCExample : UserControl
{
public UCExample()
{
InitializeComponent();
}
/// <summary>
/// Seteamos el contexto de la ventana
que informa los datos de la persona
/// </summary>
public void
SetContext(Dictionary<string,string> param)
{
//Nombre
txtbName.Text =
string.Format(": {0}", param["Name"]);
//Apellidos
txtbLastName.Text = string.Format(": {0}",
param["LastName"]);
//Profesion
txtbProfession.Text =
string.Format(": {0}", param["Profesion"]);
//Fecha de nacimiento
txtbDateBorn.Text = string.Format(":
{0}",param["DateBorn"]));
}
}
}
No hay comentarios:
Publicar un comentario