PsgLee's Blog

Never stop study, Never stop creativity !!!


Bình luận về bài viết này

Các Controls cơ bản trong Windows Phone (Phần 2)

Xin chào các bạn, trong bài hôm nay mình sẽ tiếp tục với với phần 2 của loạt bài tìm hiểu các Control cơ bản trong Windows Phone. Trong bài trước ta đã làm quen với các loại Layout Controls đó là Gird Layout, Stack Panel và Canvas. Trong Windows Phone, ngoài những Layout Controls còn có các loại Controls khác: Text Controls, Selection Controls, Button Controls và Image Controls.

1. Text Controls

  • TextBlock

Nếu bạn nào đã từng lập trình trên Windows Form thì sẽ biết đến Label, trên Windows Phone nó được gọi là TextBlock. Label hay TextBlock là những Controls hiện thị chuỗi chỉ cho phép đọc (Read Only) không cho phép chỉnh sửa. Tuy nhiên TextBlock trên Windows Phone nó cao thủ hơn, có những thuộc tính mà Label không có. Để sử dụng TextBlock bạn khai báo như sau (Code XAML):

<TextBlock Text=”Lee xin chào các bạn”/>   (Các bạn dùng thuộc tính Text để set chuỗi muốn hiển thị)

textblock

Tiếp theo mình muốn giới thiệu đến các bạn một thành phần khá hay của TextBlock đó là <Run/>. Trong trường hợp các bạn muốn hiển thị một đoạn Text nhưng đoạn Text đó nhiều định dạng khác nhau, bạn không muốn khai báo dài dòng mất thời gian (khi báo nhiều TextBlock khác nhau), <Run/> trong TextBlock sẽ giúp bạn làm điều đó. Đoạn Code sau sẽ demo nhé:

<TextBlock Margin=”10,66,34,486″ TextWrapping=”Wrap”>
<Run FontSize=”40″ FontFamily=”Time New Roman”>
3 hệ điều hành mobile phổ biến:
</Run>
<LineBreak/>
<Run FontSize=”30″ FontFamily=”Courier New” Foreground=”Red”>
– Android
</Run>
<LineBreak/>
<Run FontSize=”30″ FontFamily=”Verdana” Foreground=”Blue”>
– iOS
</Run>
<LineBreak/>
<Run FontSize=”30″ FontFamily=”Arial” Foreground=”Yellow”>
– Windows Phone
</Run>
</TextBlock>

Ta nhận được kết quả sau:

textblock2

Mình đã cố tình làm màu mè để cố gắn giới thiệu với các bạn các thuộc tính trong TextBlock. Giải thích một số thuộc tính:

– Margin: canh chỉ vị trí của Control này với Control khác (các Controls khác cũng có thuộc tính này) .

– TextWrapping: thuộc tính này có 2 giá trị là Wrap (tự động xuống dòng khi chiều rộng Control hết chỗ chứa – > co giãn đẹp hơn) và NoWrap (ngược lại nó sẽ hiển thị trên một dòng khi chuỗi quá dài nó sẽ bị mất phần phía sau không hiển thị).

– FontFamily: set Font chữ cho chuỗi.

– FontSize: set kích thước cho chuỗi.

– Foreground: set màu cho chuỗi.

Trên đây chỉ là một số thuộc tính hay dùng, các bạn có thể tìm hiểu thêm nhé.

  • TextBox

Control thứ 2 của Text Controls là TextBox, dùng để hiển thị và nhận dữ liệu input từ người dùng. Để sử dụng các bạn tiến hành khai báo như sau:

<TextBox Height=”72″ Text=”TextBox”/>

textbox

Ở Control này mình không nói rõ nữa vì các thuộc tính nó cũng tương tự nhau, mình chỉ giới thiệu cho các bạn một thuộc tính quan trọng của Control này nó focus đến người dùng. Đó là thuộc tính InputScope, nó đơn giản chỉ là hiện thị đúng loại bàn phím với nhu cầu nhập liệu giúp người dùng thao tác nhanh và dễ dàng hơn, ngoài ra còn giúp lập trình viên kiểm soát một số lỗi đơn giản. Mình sẽ lấy ví dụ đơn giản như sau: TextBox đang yêu cầu nhập số điện thoại, ta chọn InputScope là number (chỉ hiện số), nếu ta show ra bàn phím có chứa cả kí tự nữa thì ta sẽ phải có thêm dòng lệnh kiểm tra dữ liệu, còn nếu chỉ show ra bàn phím số ta chỉ cần lấy lấy dữ liệu không cần phải kiểm tra nữa vì đã đảm bảo tính chính xác của dữ liệu.

Các loại InputScope phổ biến:

– InputScope = “Url”

input1

– InputScope = “Number”

input2

– InputScope = “Text”

input3

  • PasswordBox

Một Control tiếp theo của Text Controls đó là PasswordBox, nó cũng giống như TextBox nhưng các kí tự khi người dùng nhập vào sẽ bị dấu đi. Bạn khai báo như bình thường, để get hoặc set kí tự cho PasswordBox bạn dùng thuộc tính Password:

<PasswordBox Height=”72″ Password=”123″ Width=”310″/>

password

 

 

2. Selection controls

  • CheckBox

CheckBox là Control dùng để thể hiện sự lựa chọn mang 2 giá trị true hoặc false.

Ex:

<CheckBox Height=”72″ IsChecked=”true”

Content=”Do you like WP ?”/>

checkbox

  • RadioButton

RadioButton là Control dùng để chọn một trong nhiều lựa chọn thuộc cùng nhóm với nhau. Để sử dụng các bạn khai báo như sau:

Ex:

<RadioButton Name=”radioButton1″ Content=”Nam” GroupName=”GioiTinh”/> <RadioButton Name=”radioButton2″ Content=”Nữ” GroupName=”GioiTinh”/>

radiobutton

  • Slider

Slider là Control cho phép thay đổi giá trị trong một khoảng nào đó.

Ex:

<Slider Name=”slider1″ VerticalAlignment=”Top” Width=”450″/>

slider

3. Button control

Button là Control rất hay được sử dụng, hầu như ứng dụng nào cũng có cả, nó dùng để tương tác với người dùng làm một công việc nào đó.

Ex:

<Button Content=”Button” Height=”72″ HorizontalAlignment=”Left”

Name=”button1″ VerticalAlignment=”Top” Width=”160″ />

button

4. Image control

Control này đơn giản là để hiển thị một bức ảnh lên giao diện.

<Image Source=”logoWindowsPhone.jpg” Width=”200″

Stretch=”Fill” Height=”200″ />

image

Mình vừa giới thiệu với các bạn các Control cơ bản còn lại trong Windows Phone, mình chỉ giới thiệu những cái chính thôi, còn các thuộc tính còn lại các bạn tự nghiên cứu trong quá trình lập trình nhé. Về cách thiết lập sự kiện cho các Control mình sẽ nói ở các bài sau. Trong bài tiếp theo chúng ta sẽ tiếp tục với các Control nâng cao trong Windows Phone. Chào các bạn !

 


Bình luận về bài viết này

Chương trình “Chúng ta cùng lập trình” năm 2015

Để những  khoảnh khắc chia sẽ kiến thức lập trình trở nên thú vị, hãy tham gia #WeSpeakCode. Cuộc thi #WeSpeakCode năm nay cũng sẽ được Microsoft Châu Á Thái Bình Dương tổ chức và dự kiến chuỗi sự kiện chính sẽ diễn ra từ 23 đến 29/3/2015.

Để dành giải thưởng của cuộc thi, thành viên tham dự chỉ đơn giản là chụp một bức ảnh thật sáng tạo, thú vị hoặc vui nhộn về những khoảnh khắc mà họ đang hướng dẫn bạn bè, gia đình, đồng nghiệp hoặc bất kỳ ai quen biết cách lập trình và chia sẻ bức hình này trên Instagram (http://instagram.com/WeSpeakCode) hoặc Facebook (https://www.facebook.com/WeSpeakCode?fref=photo)! Những bức hình này, người tham dự cần phải có cụm chữ #YouthSpark và #WeSpeakCode và đánh dấu (tag) @WeSpeakCode lên bức hình.

10411855_714341082012476_8672718838579985670_n

Chi tiết về cuộc thi, điều kiện và giải thưởng, vui lòng tham khảo tại http://www.wespeakcode.net/contestdetails-en.aspx .


Bình luận về bài viết này

“Thách thức để thay đổi” -“YouthSpark Challenge for Change”

Microsoft, 3/3/2015 – Microsoft vừa phát động cuộc thi mang tên “Thách thức để thay đổi” -“YouthSpark Challenge for Change”. Đây là cuộc thi dành cho thanh thiếu niên toàn cầu, lứa tuổi từ 13 đến 25.

Kêu gọi và khuyến khích thanh thiếu niên toàn cầu cùng tham dự cuộc thi “Thách thức để thay đổi” nhằm xử lý các thách thức để chuyển đổi thế giới theo xu hướng tích cực hơn.

header_top

 

Thông tin chi tiết: news.microsoft.com

Chi tiết về cuộc thi, điều kiện và giải thưởng, vui lòng tham khảo tại: microsoft.com


Bình luận về bài viết này

Các Controls cơ bản trong Windows Phone (Phần 1)

Xin chào các bạn, trong bài này sẽ giới thiệu cho các bạn các loại Layout Controls trong Windows Phone. Như các bạn đã biết hầu hết các ngôn ngữ lập trình đều hỗ trợ các loại Layout Controls để lập trình viên có thể dễ dàng trong việc quản lý các Controls khác. Trong Windows Phone, Layout Controls là những Controls kế thừa từ Panel, dùng để chứa và sắp xếp các đối tượng con nằm trong đó. Có 3 loại Layout Controls chính đó là: Gird Layout, Stack Panel và Canvas. Ngoài ra còn có 2 Controls không hẳn là Layout Controls là: Border và Scrollviewer.

  • Grid

Đầu tiên ta sẽ làm quen với Gird, hiểu nôm na đó là một cái lưới, nó sẽ định ra các dòng và cột, từ đó vị trí của các Controls bên trong Gird sẽ được xác định rõ nằm ở ô nào. Đối với Gird, các Controls trong nó sẽ được sắp xếp cân đối về cả chiều ngang và chiều dọc. Đoạn code dưới đây sẽ mô tả việc khai báo dòng và cột cho Gird layout:

<Grid x:Name=”LayoutRoot” >

<Grid.RowDefinitions>

<RowDefinition Height=”150″/>

<RowDefinition Height=”100″/>

<RowDefinition Height=”200″/>

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition Width=”150″/>

<ColumnDefinition Width=”170″/>

<ColumnDefinition Width=”160″/>

</Grid.ColumnDefinitions>

</Grid>

Và đây sẽ là kết quả của khai báo trên (khai báo trong code XAML, file .xaml):

GirdLayout

Như mình đã nói ở trên, Gird Layout có thể chèn các Controls vào đúng chính xác vào từng ô:

<Button Width=”130″ Height=”100″ Content=”Button1″/>
<Button Grid.Column=”1″ Grid.Row=”1″ Width=”130″ Height=”100″ Content=”Button2″/>
<Button Grid.Column=”2″ Grid.Row=”2″ Width=”130″ Height=”100″ Content=”Button3″/>
<Button Grid.Column=”2″ Grid.Row=”1″ Width=”130″ Height=”100″ Content=”Button4″/>
<Button Grid.Column=”1″ Grid.Row=”2″ Width=”130″ Height=”100″ Content=”Button5″/>

Các bạn quan sát ta được kết quả sau, giải thích một chút: ví dụ như Button2 ta muốn chèn vào ô ở vị trí dòng 1 cột 1 ta sẽ khai báo Grid.Column=”1″ Grid.Row=”1″. Tương tự với các button cũng như các Controls còn lại ta cũng làm tương tự. Như vậy là ta đã xong Layout Controls đầu tiên, đó chỉ là cái cơ bản nhất của Controls này, bạn có thể tìm hiểu thêm các thuộc của nó sẽ rất có ích trong quá trình lập trình (click vào Controls trong cửa sổ properties, thay đổi các thuộc tính và quan sát).

  • Stack Panel

Tiếp theo ta sẽ làm quen với Stack Panel. Stack Panel đơn giản là một panel mà các Controls nằm trong đó sẽ được sắp xếp trên một hàng dọc hoặc một hàng ngang. Để thiết lập ngang hay dọc ta sẽ dùng thuộc tính  Orientation, giá trị mặc định của thuộc tính là Vertical (chiều dọc). Đoạn code sau sẽ biểu diễn 2 loại của Stack Panel:

<Grid>
<StackPanel Margin=”20″ x:Name=”stack1″>
<Rectangle Fill=”Red” Width=”50″ Height=”50″ Margin=”5″ />
<Rectangle Fill=”Blue” Width=”50″ Height=”50″ Margin=”5″ />
<Rectangle Fill=”Green” Width=”50″ Height=”50″ Margin=”5″ />
<Rectangle Fill=”Purple” Width=”50″ Height=”50″ Margin=”5″ />
</StackPanel>
<StackPanel Margin=”20″ x:Name=”stack2″ Orientation=”Horizontal”>
<Rectangle Fill=”Red” Width=”50″ Height=”50″ Margin=”5″ />
<Rectangle Fill=”Blue” Width=”50″ Height=”50″ Margin=”5″ />
<Rectangle Fill=”Green” Width=”50″ Height=”50″ Margin=”5″ />
<Rectangle Fill=”Purple” Width=”50″ Height=”50″ Margin=”5″ />
</StackPanel>
</Grid>

GirdLayout3

Các bạn thấy rằng ở stack1 mình không thiết lập thuộc tính Orientation, Stack sẽ mặc định lấy chiều dọc, còn ở stack2 mình thiết lập là Orientation=”Horizontal”, Stack sẽ quay sang chiều ngang.

  • Canvas

Bây giờ ta sẽ tiếp tục với Layout Controls thứ 3. Canvas sẽ xác định một khu vực mà các Controls nằm trong nó sẽ được xác định vị trí bằng cách xác định khoảng cách của Controls đến lề trái và lề trên của Canvas. Các bạn lưu ý, ta thường sử dụng Canvas trong trường hợp cần tạo ra những Controls mà không muốn thay đổi vị trí của nó. Đoạn code sau sẽ mô tả việc tạo ra một hình chữ nhật có khoảng cách lề trái là 30px, lề trên là 200px:

<Canvas Background=”Transparent”>

<Rectangle Canvas.Left=”30″ Canvas.Top=”200″

Fill=”red” Width=”200″ Height=”200″ />

</Canvas>

Kết quả ta được như sau:

GridLayout4

Như vậy chúng ta đã rõ 3 Layout Controls chính trong Windows Phone. Tiếp theo mình sẽ giới thiệu 2 Layout còn lại, mặc dù không thật sự là 2 Layout Controls thật sự nhưng nó rất hay được sử dụng.

  • Border

Border là Controls dùng để tạo khung cho Gird hoặc Stack Panel. Nó cũng có thể làm khung cho các Controls khác tùy mục đích sử dụng.

Ex:

<Border BorderThickness=”8,4,2,1″  Width=”300″ Height=”300″>

<Border.BorderBrush>

<LinearGradientBrush EndPoint=”0.5,1″

StartPoint=”0.5,0″>

<GradientStop Color=”Red” Offset=”0″/>

<GradientStop Color=”Blue” Offset=”1″/>

</LinearGradientBrush>

</Border.BorderBrush>

<Grid x:Name=”ContentPanel” >

</Grid>

</Border>

Border

  • ScrollViewer

Khi bạn cần hiển thị một nội dung dài, bạn có thể dùng ScrollViewer để chứa nội dung đó. ScrollViewer cung cấp khả năng cuộn văn bản khi nó vượt quá kích thước quy định. Để sử dụng ScrollViewer bạn khai báo như sau:

<ScrollViewer Height=”350″>

<TextBlock TextWrapping=”Wrap”>

[nội dung hiển thị]

</TextBlock>

</ScrollViewer>

Qua bài này bạn đã có những kiến thức cơ bản về các Layout Controls trong Windows Phone, mình đã có 1 Project Demo các Layout Controls vừa tìm hiểu các bạn tải ở đây : http://1drv.ms/1BzgJN7 . Ở phần 2 của loạt bài Các Controls cơ bản  trong Windows Phone, mình sẽ tiếp tục giới thiệu với các bạn Text Controls, Selection Controls, Button Controls và Image Controls.

 

 


Bình luận về bài viết này

Tìm hiểu ngôn ngữ XAML

Chào các bạn, trong bài viết hôm nay mình sẽ giới thiệu với các bạn tổng quan về ngôn ngữ XAML. XAML là gì ? Cú pháp ngôn ngữ XAML ra sao?

Đầu tiên, XAML là gì ? XAML là một ngôn ngữ đánh dấu khai báo như XML, nó được sử dụng trong các mẫu lập trình của .NET để đơn giản hóa việc tạo ra giao diện người dùng. Đối với XAML bạn có thể tạo giao diện người dùng cho ứng dụng, sau đó tách riêng phần logic runtime trong file .CS, để tham gia vào các khai báo XAML thông qua partial class .XAML đại diện cho tập hợp các đối tượng được định nghĩa đặc biệt từ assembly.

XAML có tính tiện lợi rất cao mà ít ngôn ngữ đánh dấu nào có được bởi sự tách biệt giữa phần thiết kế giao diện và lập trình logic thông qua tool hỗ trợ.

Khi được hiển thị ở định dạng text, file XAML là các file XML có đuôi mở rộng là .xaml , các tập tin xaml này có thể được mã hóa giống xml ví dụ như mã hóa UTF-8 là điển hình.

Tóm tắt các cú pháp của ngôn ngữ XAML.

  • Object Element & Property Syntax

Một Object Element thường khai báo là phiên bản (instantce) của 1 kiểu (1 class). Kiểu này được định nghĩa trong assembly để cung cấp 1 kiểu (1 class) tương đương với các Object Element trong XAML.

<[Tên Object Element] [Tên Thuộc tính = “Giá trị”] />

Ex:

<Stackpanel Orientation=”Horizontal”

<Button Content=”XAML” Height=”23″ HorizontalAlign=”Left”

Margin=”6″ Name=”btnNew” VerticalAlign=”Top”

Width=”75″ Height=”38″ Click=”btnNew_Click” />

</Stackpanel>

  • Property Element Syntax

Đối với vài thuộc tính của Object Element , khai báo cú pháp Property Syntax là không thể bởi vì giá trị của thuộc tính không nằm trong phạm vi “chuỗi giá trị” thay vào đó ta phải khai báo Property Element Syntax.

Ex:

<Label Content=”Title” Margin=”6″>

<Label.Backgound>

<SolidColorBrush Color=”Olive” />

</Label.Background>

</Label>

  • Collection Syntax

XAML là ngôn ngữ tối ưu hóa khả năng đánh dấu để các nhà phát triển dễ đọc hơn. Một trong các điểm tối ưu hóa là nếu 1 thuộc tính đặc biệt có kiểu là Collection. Trong đó các Item của Collection bạn có thể đánh dấu như child element vào trong giá trị của thuộc tính đặc biệt và trở thành 1 phần của collection.

Ex:

<Label Content=”Title” Margin=”6″>

<Label.Backgound>

<LinearGradientBrush>

<LinearGradientBrush.GradientStop>

<GradientStop Offset=”0.1″ Color=”Blue” />

<GradientStop Offset=”1.1″ Color=”Red”/>

</LinearGradientBrush.GradientStop>

</LinearGradientBrush>

</Label.Background>

</Label>

  • Attached Property Syntax

Đối với một số thuộc tính của element cha có thể được gắn đính kèm vào element con.

Ex:

<Grid>

<Button Grid.Row=”1″/>

</Grid>

Vậy là mình trình bày một cách tổng quan về ngôn ngữ XAML, các bạn lưu ý đối với từng trường hợp thì các bạn sử dụng cú pháp cho phù hợp.  Các bạn đừng lo lắng quá về việc mình sẽ sử dụng cú pháp nào, cứ dùng từ từ rồi sẽ quen thôi. Ở bài tiếp theo mình sẽ hướng dẫn các bạn làm quen với một số control cơ bản trên Windows Phone.

 


Bình luận về bài viết này

Tìm hiểu vòng đời ứng dụng Windows Phone 8.1

Chào các bạn, để bắt đầu bắt tay vào viết một ứng dụng trên bất cứ nền tảng nào bạn cần nắm được vòng đời của ứng dụng để có thể làm chủ trong việc quản lý ứng dụng của mình. Ở bài này mình sẽ trình bày cho các bạn vòng đời của một ứng dụng Windows Phone 8.1.

Ở Windows Phone 8.1 vòng đời của ứng dụng sẽ khác một chút so với Windows Phone 8.0 (ở WP 8.0 khi ứng dụng đang chạy -> home -> back sẽ không hiển thị lại ứng dụng, đối với WP 8.1 làm tương tự sẽ quay trở lại ứng dụng), được biểu thị bằng sơ đồ sau:

wp5_1

Đối với 1 ứng dụng Windows Phone sẽ có 3 trạng thái chủ yếu:

– Đang chạy (Running): ở trạng thái này giao diện của ứng dụng sẽ hiển thị đầy đủ và người dùng có thể tương tác được.

– Không chạy (Terminated): có nghĩa là ứng dụng đã biến mất khỏi bộ nhớ rồi.

– Tạm ngưng hoạt động (Suspended): có nghĩa là ứng dụng vẫn đang còn trong bộ nhớ tuy nhiên người dùng sẽ không thể tương tác được và nó có thể chuyển sang trạng thái Terminated bất cứ lúc nào bởi hệ thống (bị Killable). VD: bạn đang chạy ứng dụng thì có cuộc gọi đến, ứng dụng gọi sẽ đè lên ứng dụng hiện tại, ứng dụng đó sẽ bị Suspended.

Các bạn cần phân biệt rõ giữa Terminated và Suspended nhé. Dưới đây là một số lý do mà ứng dụng có thể bị hệ thống Killable khi đang ở trạng thái Suspended:

– Hệ thống thiếu RAM, cần RAM cho một số yêu cầu ưu tiên hơn.

– Bạn tắt hoặc khởi động lại ứng dụng.

– Điện thoại gần hết Pin và một số lý do khác ….

Bạn có thể sử dụng trình Debug của Visual Studio để test các quá trình trên để có thể quản lý ứng dụng của mình được tốt hơn.

Ở bài tiếp theo mình sẽ bắt tay vào tìm hiểu một số control cơ bản trên Windows Phone 8.1.

 


Bình luận về bài viết này

Đăng kí thiết bị test ứng dụng Windows Phone 8.1

Hi các bạn, như các bạn đã theo dõi các bài trước, để test ứng dụng trên nền tảng Windows Phone 8.1 bạn có thể sử dụng máy ảo, tuy nhiên đối với các ứng dụng cần tính trực quan thì bạn phải test nó trên một thiết bị thật. Ở bài này mình sẽ hướng dẫn các bạn đăng kí thiết bị chạy Windows Phone của mình để có thể test ứng dụng.

Các bạn cần chuẩn bị:

– Một thiết bị (tất nhiên là chạy HĐH Windows Phone) + Cáp + PC (Laptop) cài driver đầy đủ.

– Một tài khoản Dev, các bạn đăng kí tại http://dev.windowsphone.com.

Tiếp theo các bạn cắm thiết bị vào máy tính của bạn, vào Start Screen bạn tìm kiếm Windows Phone Developer Registration 8.1 và mở phần mềm:

WPDevWPDev2

Sau đó bạn bấm Register, điền đầy đủ thông tin:

WPDev3

Một đăng kí thành công là khi bạn nhận được màn hình hiển thị sau:

wp4_5

Các bạn lưu ý, cần mở khóa màn hình điện thoại nếu không sẽ nhận được lỗi sau:

wp4_6

Vậy là xong rồi, các bạn chỉ việc chọn trên thanh công cụ thay vì chạy bằng máy ảo Windows Phone thì bạn chọn Device, F5 và bắt đầu Test thôi:

Untitled

Chúc các bạn thành công, ở bài tiếp theo mình sẽ giới thiệu với các bạn vòng đời của 1 ứng dụng Windows Phone 8.1.