Silverlight/XAML – Learning by Coding
1: <?xml version="1.0" encoding="UTF-8"?>
2: <!-- coded by Thomas Meinike 02/08 -->
3: <Canvas xmlns="http://schemas.microsoft.com/client/2007"
4: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5: x:Name="block" Loaded="TastenInit">
6:
7: <Rectangle Canvas.Left="20" Canvas.Top="20" Width="600" Height="400"
8: Fill="#FFF" Stroke="#CCC"/>
9:
10: <Canvas x:Name="symbol" Canvas.Left="20" Canvas.Top="20" MouseLeftButtonDown="Reset">
11: <Rectangle Canvas.Left="0" Canvas.Top="0" Width="20" Height="20" Fill="#00C"/>
12: <Polygon x:Name="l" Points="0,5 -5,10 0,15" Fill="#F00" Visibility="Collapsed"/>
13: <Polygon x:Name="r" Points="20,5 25,10 20,15" Fill="#F00" Visibility="Visible"/>
14: <Polygon x:Name="o" Points="5,0 10,-5 15,0" Fill="#F00" Visibility="Collapsed"/>
15: <Polygon x:Name="u" Points="5,20 10,25 15,20" Fill="#F00" Visibility="Visible"/>
16: </Canvas>
17:
18: <TextBlock Canvas.Left="20" Canvas.Top="430" FontFamily="Arial" FontSize="14"
19: Foreground="#999" Text="Das Objekt lässt sich (nach Anklicken) mit den Pfeiltasten bewegen."/>
20:
21:
22: <!-- // zusätzlich verwendeter JavaScript-Code:
23:
24: var block,symbol,l,r,o,u,sl,st; // global
25:
26: function TastenInit(sender,eventArgs)
27: {
28: block=sender.findName("block");
29: symbol=sender.findName("symbol");
30:
31: l=sender.findName("l");
32: r=sender.findName("r");
33: o=sender.findName("o");
34: u=sender.findName("u");
35:
36: sl=symbol["Canvas.Left"];
37: st=symbol["Canvas.Top"];
38:
39: // Pfeiltasten außerhalb des SL-Objektes abfangen
40: window.document.onkeydown=function(evt)
41: {
42: var keynum,evt=evt || window.event;
43: if(window.captureEvents)keynum=evt.which;
44: else keynum=evt.keyCode;
45: if(keynum>=37 && keynum<=40)return false;
46: }
47:
48: block.addEventListener("KeyUp",KeyCheck);
49: // KeyDown wird für die Pfeiltasten in SL 1.0 nicht unterstützt!
50: }
51:
52:
53: function KeyCheck(sender,eventArgs)
54: {
55: var keynum,bl,bt;
56:
57: bl=symbol["Canvas.Left"];
58: bt=symbol["Canvas.Top"];
59:
60: keynum=eventArgs.platformKeyCode; // Tastencode verarbeiten
61: if(keynum==37 && bl>20)bl-=10; // Pfeiltaste links
62: else if(keynum==38 && bt>20)bt-=10; // Pfeiltaste oben
63: else if(keynum==39 && bl<600)bl+=10; // Pfeiltaste rechts
64: else if(keynum==40 && bt<400)bt+=10; // Pfeiltaste unten
65:
66: if(bl==20)l.visibility="Collapsed";
67: else l.visibility="Visible";
68:
69: if(bl==600)r.visibility="Collapsed";
70: else r.visibility="Visible";
71:
72: if(bt==20)o.visibility="Collapsed";
73: else o.visibility="Visible";
74:
75: if(bt==400)u.visibility="Collapsed";
76: else u.visibility="Visible";
77:
78: symbol["Canvas.Left"]=bl;
79: symbol["Canvas.Top"]=bt;
80: }
81:
82:
83: function Reset()
84: {
85: l.visibility="Collapsed";
86: r.visibility="Visible";
87: o.visibility="Collapsed";
88: u.visibility="Visible";
89:
90: symbol["Canvas.Left"]=sl;
91: symbol["Canvas.Top"]=st;
92: }
93:
94: -->
95:
96: </Canvas>
[zum Anfang]