05 April 2017

Windows Store và Language: Giải phương trình bậc hai với WinRT và Thay đổi Languages trên App Windows Store C#

Viết 1 WinRT component có 1 hàm giải phương trình bậc 2.
Viết 1 ứng dụng windows Store app sử dụng WinRT component trên và có giao diện như sau: 
Viết 1 menu cho phép người dùng thay đổi ngôn ngữ của ứng dụng từ tiếng việt -> English

Change Language English
 Change Language VietNam
MainPage.xaml
Windows Store 2017
<Page
    x:Class="LocalizationSample.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:LocalizationSample"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ComboBox x:Name="cbbLanguage" SelectedValuePath="Name" HorizontalAlignment="Left" Margin="122,95,0,0" VerticalAlignment="Top" Width="192">
            <ComboBoxItem x:Name="en" Content="English"/>
            <ComboBoxItem x:Name="vi" Content="VietNam"/>
        </ComboBox>
        <Button x:Name="btnChangeLanguage" Content="Change Language" HorizontalAlignment="Left" Margin="370,92,0,0" VerticalAlignment="Top" Click="btnChangeLanguage_Click" d:LayoutOverrides="HorizontalAlignment"/>

        <TextBox x:Name="tb_a" HorizontalAlignment="Left" Margin="221,200,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="203"/>
        <TextBox x:Name="tb_b" HorizontalAlignment="Left" Margin="221,263,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="203"/>
        <TextBox x:Name="tb_c" HorizontalAlignment="Left" Margin="221,317,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="203"/>
        <TextBox x:Name="tb_kq" HorizontalAlignment="Left" Margin="221,0,0,351" TextWrapping="Wrap" Text="" VerticalAlignment="Bottom" Width="203"/>
        <Button x:Name="btn_giai" Content="Giai" Margin="122,0,0,263" VerticalAlignment="Bottom" Click="btn_giai_Click"/>
        <Button x:Name="btn_moi" Content="Moi" Margin="240,0,0,263" VerticalAlignment="Bottom" Click="btn_moi_Click"/>
        <Button x:Name="btn_thoat" Content="Thoat" Margin="370,0,0,263" VerticalAlignment="Bottom" Click="btn_thoat_Click"/>
        <TextBlock x:Name="textBlock_A" HorizontalAlignment="Left" Margin="125,215,0,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="18" Height="17">
            <Run Text="Nhap A"/>
            <LineBreak/>
            <Run/>
        </TextBlock>
        <TextBlock x:Name="textBlock_B" HorizontalAlignment="Left" Margin="125,263,0,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="18" Text="Nhap B&#xD;&#xA;" Height="32"/>
        <TextBlock x:Name="textBlock_C" HorizontalAlignment="Left" Margin="125,327,0,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="18" Text="Nhap C"/>
        <TextBlock x:Name="textBlock_D" HorizontalAlignment="Left" Margin="125,0,0,351" TextWrapping="Wrap" VerticalAlignment="Bottom" FontSize="18" Text="Ket qua&#xD;&#xA;" Width="91" Height="32"/>
    </Grid>
</Page>
MainPage.xaml.cs
Windows Store 2017
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.ApplicationModel.Resources.Core;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
using Windows.UI.Xaml.Navigation;

using WindowsRuntimeComponent1; //Import project componentRT

namespace LocalizationSample
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        private void btnChangeLanguage_Click(object sender, RoutedEventArgs e)
        {
            var c = ResourceContext.GetForCurrentView();
            var lang = new List<string>();
            lang.Add(cbbLanguage.SelectedValue.ToString());
            c.Languages = lang;

            var r = ResourceManager.Current.MainResourceMap.GetSubtree("Resources");

            // Đưa nghĩa từ file dịch vào TextBlock
            textBlock_A.Text = r.GetValue("AppStringA", c).ValueAsString;
            textBlock_B.Text = r.GetValue("AppStringB", c).ValueAsString;
            textBlock_C.Text = r.GetValue("AppStringC", c).ValueAsString;
            textBlock_D.Text = r.GetValue("AppStringD", c).ValueAsString;

            // Đưa nghĩa từ file dịch vào Button
            btn_giai.Content = r.GetValue("AppStringGiai", c).ValueAsString;
            btn_moi.Content = r.GetValue("AppStringMoi", c).ValueAsString;
            btn_thoat.Content = r.GetValue("AppStringThoat", c).ValueAsString;

        }

        private void btn_giai_Click(object sender, RoutedEventArgs e)
        {
            //Gọi method giai(truyền tham số a,b,c) và lấy giá trị về hiển thị kết quả
            WindowsRuntimeComponent1.Class1 cl = new Class1();
            String s = cl.giai((float)Convert.ToDouble(tb_a.Text), (float)Convert.ToDouble(tb_b.Text), (float)Convert.ToDouble(tb_c.Text));
            tb_kq.Text = s;
        }

        private void btn_moi_Click(object sender, RoutedEventArgs e)
        {
            tb_a.Text = "";
            tb_b.Text = "";
            tb_c.Text = "";
            tb_kq.Text = "";
            //Reset textbox
        }

        private void btn_thoat_Click(object sender, RoutedEventArgs e)
        {
            Application.Current.Exit(); //Exit App
        }
    }
}
Tạo Windows Runtime Component
Class1.cs
Windows Store 2017
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsRuntimeComponent1
{
    public sealed class Class1
    {
        public String giai(float a, float b, float c)
        {
            float delta;
            float x;
            float x2;
            float x1;
            delta = (b * b) - (4 * a * c);

            if (a == 0)
            {
                if (b == 0 && c != 0)
                    return "Phuong trinh vo nghiem";
                else
                {
                    x = -c / b;
                    return "Phuong trinh co nghiem " + x.ToString();
                }
            }
            else
            {
                if (delta < 0)
                    return "Phuong trinh vo nghiem";
                else if (delta == 0)
                {
                    x = -b / 2 * a;
                    return "Phuong trinh co nghiem" + x.ToString();
                }
                else
                {
                    x1 = (-b - (float)Math.Sqrt(delta)) / 2 * a;
                    x2 = (-b + (float)Math.Sqrt(delta)) / 2 * a;
                    return "x1=" + x1.ToString() + "\nx2= " + x2.ToString();
                }
            }
        }

    }
}
Tạo xong Class1.cs chúng ta cần phải Add References cho App có tên LocalizationSaple này
Sau khi Add thành công
Tạo đa ngôn ngữ chúng ta cần tạo Folder String > en và vi
Trong đó Tạo Resources.resw 
Phần dịch ngôn ngữ tiếng Việt nam
 Tiếng anh
Về phần folder MultilingualResources tự tạo bằng cài đặt tool

0 nhận xét:

Post a Comment

 

BACK TO TOP

Xuống cuối trang