none
RADIOBUTTON RRS feed

  • Debate general

  • App.xaml

    <phone:PhoneApplicationPage 
        x:Class="_1___MENSAJERÍA.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
        xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="{StaticResource PhoneForegroundBrush}"
        SupportedOrientations="Portrait" Orientation="Portrait"
        shell:SystemTray.IsVisible="True">
    
        <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
        <Grid x:Name="LayoutRoot" Background="Transparent">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
            <!--TitlePanel contiene el nombre de la aplicación y el título de la página-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock x:Name="ApplicationTitle" Text="DAM2-CMA" Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBlock x:Name="PageTitle" Text="mensajeria" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
            </StackPanel>
            
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                
                <StackPanel>
                    
                    <TextBlock      x:Name="txbLinea1"
                                    Text="Peso del paquete (en Kgs.)" 
                                    Style="{StaticResource styTextBlock}" />
                    
                    <TextBox        x:Name="txtPeso" />
    
                    <TextBlock      x:Name="txbLinea3"
                                    Text="Tipo de envío:" 
                                    Style="{StaticResource styTextBlock}" />
    
                    <RadioButton    x:Name="optNormal"
                                    GroupName="optGrupo1"
                                    IsChecked="true" 
                                    Content="Normal"/>
    
                    <RadioButton    x:Name="optUrgente"
                                    GroupName="optGrupo1"
                                    IsChecked="true" 
                                    Content="Urgente"/>
    
                    <RadioButton    x:Name="opt24h"
                                    GroupName="optGrupo1"
                                    IsChecked="true" 
                                    Content="24h"/>
                    
                    <Button         x:Name="cmdProcesar"
                                    Content="Procesar" />
    
    
                </StackPanel>
                
                
            </Grid>
        </Grid>
    
    </phone:PhoneApplicationPage>


    Clase de Ejemplo para controlar los diferentes RadioButton

    using System;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Ink;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    namespace _1___MENSAJERÍA
    {
        public class Mensajeria
        {
    
            public enum TipoEnvio {Normal,Urgente,VeintiCuatroHoras};
    
            private double _peso;
    
            public double Peso
            {
                get { return _peso; }
    
                set 
                {
                    if (value <= 0) 
                    {
                        throw new Exception("El peso debe ser un número entero mayor o igual que cero");
                    }
                    _peso = value; 
                }
            }
    
            /*Propiedades que sólo puede modificar la clase: propg*/
            public double Precio { get; private set; }
            public double Total { get; private set; }
            public String Tipo { get; private set; }
    
    
            private TipoEnvio CodigoTipo = TipoEnvio.Normal;
    
    
            /*Al crear un objeto de la clase mensajería se pone el peso a 5 por defecto
             y el tipo a normal. Para cambiar el tipo de envío habrá un método por tipo de
             envío que será público, accesible al cambiar los RadioButton*/
            public Mensajeria(int Peso = 5)
            {
                this.CodigoTipo = TipoEnvio.Normal;
                this.Peso = Peso;
            }
    
            /*Cada uno de los métodos será llamado al cambiar el RadioButton. Cada método
             calculará de nuevo el importe total.*/
    
            public void tipoNormal()
            {
                this.CodigoTipo = TipoEnvio.Normal;
                this.CalcularImporte();
            }
    
            public void tipoUrgente() 
            {
                this.CodigoTipo = TipoEnvio.Urgente;
                this.CalcularImporte();
            }
    
            public void tipo24horas()
            {
                this.CodigoTipo = TipoEnvio.VeintiCuatroHoras;
                this.CalcularImporte();
            }
    
            /*Método para calcular el importe. Será llamado al modificar el peso o al
             modificar el tipo de envío. El peso se modifica modificando el dato miembro
             Los tipos se modifican cambiando los tipos.*/
    
            private void CalcularImporte()
            {
    
                // Política de precios según el peso.
                if (this.Peso <= 5)         this.Precio = 2;
                else if (this.Peso <= 25)   this.Precio = 4;
                else if (this.Peso <= 50)   this.Precio = 7;
                else                        this.Precio = 11;
    
                //Calculo del total
                this.Precio = this.Precio * this.Peso;
    
                //Cálculo de recargos
                if (this.CodigoTipo == TipoEnvio.Normal) 
                {
                    this.Tipo = "Normal";
                }
                else if (this.CodigoTipo == TipoEnvio.Urgente) 
                {
                    this.Tipo = "Urgente (Recargo 15%)";
                    this.Total*=1.15;
                }
                else if (this.CodigoTipo == TipoEnvio.VeintiCuatroHoras)
                {
                    this.Tipo = "24 h. (Recargo 25%)";
                    this.Total *= 1.25;
                }
    
    
            }
            
        }
    }

    Resultados.xaml

    <phone:PhoneApplicationPage 
        x:Class="_1___MENSAJERÍA.Resultados"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
        xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="{StaticResource PhoneForegroundBrush}"
        SupportedOrientations="Portrait" Orientation="Portrait"
        mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
        shell:SystemTray.IsVisible="True">
    
        <!--LayoutRoot es la cuadrícula raíz donde se coloca todo el contenido de la página-->
        <Grid x:Name="LayoutRoot" Background="Transparent">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
    
            <!--TitlePanel contiene el nombre de la aplicación y el título de la página-->
            <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
                <TextBlock x:Name="ApplicationTitle" Text="DAM2-CMA" Style="{StaticResource PhoneTextNormalStyle}"/>
                <TextBlock x:Name="PageTitle" Text="importe final" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
            </StackPanel>
    
            
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*" />                    
                    </Grid.ColumnDefinitions>
                    
                    <Grid.RowDefinitions>
                        <RowDefinition Height="auto" />
                        <RowDefinition Height="auto" />
                        <RowDefinition Height="auto" />
                        <RowDefinition Height="auto" />
                    </Grid.RowDefinitions>
                    
                    <TextBlock x:Name="txbEqFinal"
                               Text="Importe:" 
                               Grid.Column="0"
                               Grid.Row="0" 
                               Style="{StaticResource PhoneTextLargeStyle}" />
                    
                    <TextBlock x:Name="txbImporteFinal"
                               Text="{Binding Total,ConverterCulture=es-ES,StringFormat='{}{0:c}'}"
                               Grid.Column="1" 
                               HorizontalAlignment="Right" 
                               Style="{StaticResource PhoneTextLargeStyle}" />
                    
                    <TextBlock x:Name="txbPpKg"
                               Text="Precio por Kg:"
                               Grid.Column="0" 
                               Grid.Row="1" 
                               Style="{StaticResource PhoneTextSubtleStyle}"/>
    
                    <TextBlock x:Name="txbPrecioPorKg"
                               Text="{Binding Precio,ConverterCulture=es-ES,StringFormat='{}{0:c}'}"
                               Grid.Column="1" 
                               Grid.Row="1" 
                               HorizontalAlignment="Right" 
                               Style="{StaticResource PhoneTextSubtleStyle}"/>
                    
                    <TextBlock x:Name="txbPpPaq"
                               Text="Peso del paquete"
                               Grid.Column="0" 
                               Grid.Row="2"
                               Style="{StaticResource PhoneTextSubtleStyle}"/>
    
                    <TextBlock x:Name="txbPesoPaquete"
                               Text="{Binding Peso,StringFormat='{}{0,2:f} Kgs.'}"
                               Grid.Column="1" 
                               Grid.Row="2" 
                               HorizontalAlignment="Right" 
                               Style="{StaticResource PhoneTextSubtleStyle}"/>
    
                    <TextBlock x:Name="txbTpEn"
                               Text="Tipo de envío"
                               Grid.Column="0" 
                               Grid.Row="3"
                               Style="{StaticResource PhoneTextSubtleStyle}"/>
    
                    <TextBlock x:Name="txbTipoEnvio"
                               Text="{Binding Tipo}"
                               Grid.Column="1" 
                               Grid.Row="3" 
                               HorizontalAlignment="Right" />
    
                </Grid>
               
                
            </Grid>
        </Grid>
     
       
    
    </phone:PhoneApplicationPage>

    Lógica: MainPage.xaml.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.Phone.Controls;
    
    namespace _1___MENSAJERÍA
    {
        public partial class MainPage : PhoneApplicationPage
        {
    
            private Mensajeria mensaje = new Mensajeria();
    
            // Constructor
            public MainPage()
            {
                InitializeComponent();
            }
    
            private void txtPeso_GotFocus(object sender, RoutedEventArgs e)
            {
                TextBox caja = sender as TextBox;
                if (caja != null) caja.SelectAll();
                
            }
    
            private void cmdProcesar_Click(object sender, RoutedEventArgs e)
            {
    
                /*Al hacer click sobre el botón cambiamos el peso del objeto que tenemos creado.*/
                try
                {
                    mensaje.Peso = double.Parse(txtPeso.Text.Replace(',', '.'), System.Globalization.CultureInfo.InvariantCulture);
                }
                catch (FormatException)
                {
    
                    MessageBox.Show("Introduce un número", this.ApplicationTitle.Text, MessageBoxButton.OK);
                    txtPeso.Focus();
                    return;
                }
    
                /*A continuación miramos, a partir de un if-else-if el botón que está pulsado y cambiamos también el tipo
                 Utilizando los métodos que tenemos en la clase*/
                if (optNormal.IsChecked == true)        mensaje.tipoNormal();
                else if (optUrgente.IsChecked == true)  mensaje.tipoUrgente();
                else                                    mensaje.tipo24horas();
    
                /*Navegación a la página de resultados. Enlace en OnNavigatedFrom*/
                NavigationService.Navigate(new Uri("/Resultados.xaml", UriKind.Relative));
    
            }
    
            protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
            {
                base.OnNavigatedFrom(e);
                Resultados paginaResultados = e.Content as Resultados;
                if (paginaResultados != null) paginaResultados.DataContext = mensaje;
            }
    
         
        }
    }



    martes, 14 de enero de 2014 19:57

Todas las respuestas

  • Hola Arnold.

    ¿Cuál es el problema?


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    MS | Programming in HTML5 with JavaScript and CSS3 (MS), Developing ASP.NET MVC 4 Web Applications
    Twitter | @saintwukong

    sábado, 18 de enero de 2014 1:44