Código LaTeX
Ejemplo usando MultiBinding y MultiValueConverter .Lo que muestra es el código para generar una tabla en LaTeX:
Descargar
Nota: Se requiere el framework 3.5
Estado de excepción digital
Hace 2 meses
...Apuntes de lo que vaya aprendiendo, algo así como el cuaderno del programador...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestWPF_Data_Binding_II
{
public enum TipoDistancia
{
Millas,
Kilometros
}
public class ConvertidorDistancia
{
/// <summary>
/// Convierte Millas a Kilometros y viceversa.
/// </summary>
/// <param name="valorDist">Valor a convertir</param>
/// <param name="tipoDistancia">Tipo de Distancia</param>
/// <returns>Un string conteniendo el valor convertido</returns>
public string Convertir(double valorDist, TipoDistancia tipoDistancia)
{
if (tipoDistancia == TipoDistancia.Millas)
{
return (valorDist * 1.609344).ToString("0.##") + " km";
}
if (tipoDistancia == TipoDistancia.Kilometros)
{
return (valorDist * 0.621371192).ToString("0.##") + " m";
}
throw new ArgumentOutOfRangeException("tipoDistancia");
}
}
}
xmlns:local="clr-namespace:TestWPF_Data_Binding_II"
1: <Window x:Class="TestWPF_Data_Binding_II.DataBinding_Method"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml
"
4: xmlns:local="clr-namespace:TestWPF_Data_Binding_II"
5: xmlns:system="clr-namespace:System;assembly=mscorlib"
6: Title="DataBinding_Method" Height="300" Width="300">
7: <Window.Resources>
8: 9: <!-- Instancia de la clase DoubleToString que impl
ementa a IValueConverter -->
10: <local:DoubleToString x:Key="doubleToString" />
11: 12: <!-- ObjectDataProvider pone al metodo como fuente de datos(origen de enlace/binding source) -->
13: <ObjectDataProvider
14: x:Key="ConvertirDistancia"
15: ObjectType="{x:Type local:ConvertidorDistancia }"
16: MethodName="Convertir" >
17: <!-- Declaramos los parametros que recibe el metodo Convertir-->
18: <ObjectDataProvider.MethodParameters>
19: <system:Double>10</system:Double>
20: <local:TipoDistancia>Millas</local:TipoDistancia>
21: </ObjectDataProvider.Method
Parameters>
22: </ObjectDataProvider>
23: </Window.Resources>
24: 25: <Grid Margin="10">
26: <Grid.ColumnDefinitions>
27: <
ColumnDefinition Width="0.5*"/>
28: <ColumnDefinition Width="0.5*"/>
29: </Grid.ColumnDefinitions>
30: <Grid.RowDefinitions>
31: <RowDefinition Height="31" />
32: <RowDefinition Height="31" />
33: <RowDefinition Height="31" />
34: </Grid.RowDefinitions>
35: 36: <TextBlock Margin="5" Grid.ColumnSpan="2"
37: VerticalAlignment="Center"
38: Text="Ingrese una distancia para convertir :"/>
39: 40: <!-- Este TextBox enlazara al primer parametro del metodo Convertir -->
41: <TextBox
42: Grid.Row="1" Grid.Column="0" Margin="5"
43: Text ="{Binding Source={StaticResource ConvertirDistancia}, Path=MethodParameters[0],
44: BindsDirectlyToSource=true, UpdateSourceTrigger=PropertyChanged,45: Converter={StaticResource doubleToString}}"/>
46: 47: <!-- Este ComboBox enlazara al segundo parametro del metodo Convertir -->
48: <ComboBox
49: Grid.Row="1" Grid.Column="1" Margin="5" Width="80"
50: HorizontalAlignment="Left"
51: SelectedValue="{Binding
52: Source={StaticResource ConvertirDistancia}, 53: Path=MethodParameters[1],54: BindsDirectlyToSource=true}" >
55: <local:TipoDistancia>Millas</local:TipoDistancia>
56: <local:TipoDistancia>Kilometros</local:TipoDistancia>
57: </ComboBox>
58: <TextBlock Grid.Row="2" HorizontalAlignment="Right" Margin="5"
59: Text="Resultado:"/>
60: 61: <!-- Este TextBlock enlaza al resultado del metodo Convertir, es decir, lo que retorna.-->
62: <TextBlock Grid.Row="2" Grid.Column="1" Margin="5"
63: Text="{Binding Source={StaticResource ConvertirDistancia}}"/>
64: 65: </Grid>
66: </Window>
<Window.Resources> y </Window.Resources>.Y puesto que voy a enlazar el metodo Convertir debo instanciar la clase ConvertidorDistancia mediante la clase ObjectDataProvider.Esta clase ajusta y crea un objeto que se puede utilizar como origen de enlace.La operación comienza en la línea 13 y termina en la línea 22. x:Key="ConvertirDistancia"ObjectType="{x:Type local:ConvertidorDistancia }"MethodName="Convertir"<ObjectDataProvider.MethodParameters><system:Double>10</system:Double><local:TipoDistancia>Millas</local:TipoDistancia>Path=MethodParameters[0]BindsDirectlyToSource=trueUpdateSourceTrigger=PropertyChanged<local:TipoDistancia>Millas</local:TipoDistancia>
<local:TipoDistancia>Kilometros</local:TipoDistancia>Text="{Binding Source={StaticResource ConvertirDistancia}}"<local:DoubleToString x:Key="doubleToString" />
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//para implementar ivalueconverter
using System.Windows.Data;
//necersario para CultureInfo
using System.Globalization;
namespace TestWPF_Data_Binding_II
{
[ValueConversion(typeof(double), typeof(String))]
public class DoubleToString: IValueConverter
{
/// <summary>
/// Convierte Double a String.Antes de actualizar el valor del destino de enlace
///el valor pasa por este metodo para ser convertido a String.
/// </summary>
/// <param name="value">Objeto double</param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double val = (double)value;
return val.ToString();
}
/// <summary>
/// Covierte String a Double.Antes de actualizar el valor del origen de enlace
/// el valor pasa por este metodo para ser convertido a Double.
/// </summary>
/// <param name="value">Objeto string</param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
//throw new NotImplementedException();-->cuando no es necesario implementar el metodo.
double val = Double.Parse(value.ToString());
return val;
}
}
}
Converter={StaticResource doubleToString}}
var x;
x=$(document);
x.ready(AnularEnter);
function AnularEnter()
{
var x;
x=$("#form1");
x.keypress(function(e){if(e == 13){return false;}});
/*para los textboxes*/
$("input[type=text]").keypress(function(e){
if(e.which == 13){ return false; } });
/*para los radio*/
$("input[type=radio]").keypress(function(e){
if(e.which == 13){ return false; } });
/*para los checkboxes*/
$("input[type=checkbox]").keypress(function(e){
if(e.which == 13){ return false; } });
}
x=$("#form1");
x= getElementById('form1');
$("#elId");
$(".laClass");
$("input[type=text]");
$("input[type=text]").keypress(function(e){
if(e.which == 13){ return false; } });
<html>
<head><title>Test-Submit</title>
<script type="text/javascript">
function CancelSubmit(e)
{
var keynum
if(window.event) // IE
{
keynum = e.keyCode
}
else if(e.which) // Netscape/Firefox/Opera
{
keynum = e.which
}
return (keynum != 13);
}
</script>
</head>
<body>
<h1>CANCELAR SUBMIT</h1>
<form method="post" action="Test-Submit.html">
<input type="text" onkeypress="return CancelSubmit(event)" />
</form>
</body>
</html>