MultiSlot Urklipp (7 / 9 steg)

Steg 7: Replikera UI

Så långt skapat vi vissa fält för att lagra data och några metoder för att

initiera datastrukturen och få den markerade texten. Nu måste vi skapa dynamiskt användargränssnitt för att Visa fem uppsättningar av rutnätet mall.

Vi behöver lagra fem gallren på en matris så vi kan komma åt nätet med hjälp av ett index innanför kontrollens händelser. Att lagra dynamiskt skapade rutnäten måste vi skapa matrisen aGroupGrids som privat fält i klassen MinKontroll. Datatypen i denna matris är Grid (System.Windows.Controls.Grid) och högsta antalet element är lagrad på den konstant MAX_SLOTS.

privata nät [] aGroupGrids = nya nätet [MAX_SLOTS];

Innan vi initiera matrisen av nät vi måste skapa en metod för att klona den befintliga grid grdTemplate vi skapat på steg 3. Tyvärr, .NET framework har inte en inbyggd funktion att klona en UI kontroll, så vi måste skapa våra egna. Därför måste vi skapa metoden CloneControls() som visar nedan.

privat Grid CloneControls(Grid myGrid)

{

string gridXaml = XamlWriter.Save(myGrid);

StringReader stringReader = ny StringReader(gridXaml);

XmlReader xmlReader = XmlReader.Create(stringReader);

Grid newGrid = (Grid)XamlReader.Load(xmlReader);

återvända newGrid;

}

CloneControls() metoden få en Grid-objektet som en parameter och returnerar ett annat rutnät objekt, som är en klon av parametern. Inuti denna metod använder vi de klasser som serialisera objekt på formatet XML att få alla egenskaper, värderingar och andra element som lagras i kontrollen. Följande länk innehåller en bra förklaring om XML serialization med klasserna XamlWriter och XMlReader på .NET Framework 4.0.

http://blogs.msdn.com/b/bursteg/Archive/2009/05/18/XAML-in-net-4-0-serialization-and-deserialization-using-xamlservices.aspx

Nu när vi har aGroupGrids matrisen att lagra de dynamiska skapade kontrollerna och den CloneControls() metoden att klona rutnät objekten vi måste initiera elementen, dvs skapa dem. Vi kommer att göra det inne i en ny metod som kallas InitializeInteface(). Denna metod ska anropas inuti den MinKontroll konstruktören strax efter anropet InitializeClipboard(). Konstruktören av klassen MinKontroll bör se ut så här:

offentliga MyControl()

{

InitializeComponent();

Lägga till tomma platser

IntilializeClipBoard();

Initilizae gränssnittet

InitializeInterface();

}

Inuti InitializeInterface() ska vi göra följande uppgifter:

· Dölja grdTemplateGrid;

· För varje ny slot klon grdTemplateGrid nätet:

o sätt in nya klonade rutnätet på aGroupGrid matrisen.

o ange synligheten för nya klonade rutnätet.

o ange position av klonade nätet en ny marginal så rutnäten inte överlappar visuellt.

o ändra bildtexten etikettens Visa som rutnät motsvarar varje kortplats.

o egenskapen Tag av kontrollerna och ListView att lagra index för klonade rutnätet.

o ställa ombudet metoder till Klicka på händelserna i knapparna. Ange även delegatmetod dubbelklicka på händelsen i ListView.

o Lägg till nya klonade rutnätet i behållaren grid grdMain.

Den fullständiga koden för metoden InitializeInterface() visas nedan:

privata void InitializeInterface()

{

Double left_initial =-170;

this.grdTemplate.Visibility = Visibility.Hidden;

för (int jag = 0; jag < MAX_SLOTS; i ++)

{

aGroupGrids [i] = CloneControls(this.grdTemplate);

aGroupGrids [i]. Synlighet = Visibility.Visible;

left_initial = left_initial + 180,0;

aGroupGrids [i]. Marginal = ny System.Windows.Thickness (left_initial,-5.0, 0,0, 0,0);

Måste ändra Slot etikett + lägga till händelser i knapparna och listan

Beställning av delar

0 -> knappen Klistra in

1 -> knappen Kopiera

2 -> listvy

3 -> etikett

4 -> knappen Cut

aGroupGrids [i]. Tag = i.

Ange etiketten bildtexten

((Etikett) aGroupGrids [i]. Children[3]). Content = "Slot" (jag + 1). ToString();

Ställer in Taggar med index för rutnätet i matrisen

Detta kommer att vara användbart senare på (för händelser)

Knappen Klistra in = ((knappen) aGroupGrids [i]. Children[0]);

Knappen Kopiera = ((knappen) aGroupGrids [i]. Children[1]);

Knappen Cut = ((knappen) aGroupGrids [i]. Children[4]);

ListView lstData = ((listvy) aGroupGrids [i]. Children[2]);

Paste.Tag = i.

Copy.Tag = i.

Cut.Tag = i.

lstData.Tag = i.

Ställa in knapparna händelserna (klicka)

Copy.Click += Copy_Click;

Paste.Click += Paste_Click;

Cut.Click += Cut_Click;

Ställa in händelsen ListView (MouseDoubleClick)

lstData.MouseDoubleClick += lstData_MouseDoubleClick;

Lägga till rutnätet i överordnat rutnät

grdMain.Children.Add(aGroupGrids[i]);

}

}

Hur allt vi behöver göra är att fylla i metoderna som delegat för knapparna (Copy_Click, Pastle_Click, Cut_Click) och metoden för dubbel klicka på ListView (lstData_MouseDoubleClick), som visar en enkel meddelanderuta med innehållet i det markerade objektet.

Se Steg
Relaterade Ämnen

Urklipp kommunikation PC ↔ Pi med Python

Jag använda brukar min hallon-Pi på en delad windows-skrivbordet. Jag delar också en nätverksenhet med Pi. Detta är bra, men jag har fortfarande irritationen i Urklipp på datorn inte kommer till uttryck på Pi. Det kan vara plattformsoberoende apps ut...

Smartphone Urklipp

Smartphones är fantastiska för många användningsområden förutom att det är huvudsakliga användningen som en telefon. Som student på en föreläsning, med praktiskt taget ingen plats för din telefon, fungerar detta Urklipp fantastiskt! Med alla bra prog...

Urklipp från stora klipp

Detta är vad din slutliga styrelse kommer att se ut.Steg 1: Samla delar och verktygDu behöver en (planka) styrelse, jag använde enkla ply 7 x 35 mm x225 (men 5 mm eller ens 3 mm tjocklek skulle fungera).lista över delarstyrelsen stora nog att hantera...

Mus fälla Urklipp

Skapa en helt billigt Urklipp praktiskt taget var som helst med denna smarta mus fälla Urklipp. Ta några mus fölen, tång och en oscillerande verktyg (jag använde en Dremel multi Max) med infälld skurna blad.Steg 1: Få dina leveranserJag plockade upp...

InstaMorph A Urklipp!

Hej gott folk!Omaha Maker gruppen är tillbaka med en annan stor Instructable, denna gång som en del av April bygga natten med InstaMorph!För detta projekt hade en av våra medlemmar en Lagring Urklipp som han använder för att ta anteckningar i fältet...

Urklipp för vänster räckte människor

om du är vänsterhänt, vet du hur svårt det är att skriva en Urklipp. Klippet, även på en låg profil Urklipp liknande den som visas här, är i vägen för din hand hela tiden.Steg 1: En möjlighet Är det nästan omöjligt att skriva nära toppen av papperet...

VÄRLDENS ENKLASTE KONST URKLIPP!

En frekvent låda, jag som använder 9 "x 12" papper jag får från min lokala tryckeri. Det enda problemet är täcker inte passar någon klippborden för portabilitet...... om detta ett jag gjort själv.För verktyg du kan räkna på en hand och nr pengar...

Urklipp pennhållare

anpassa Urklipp med en funktionell pennhållare. Att göra detta är snabbt, Billigt och enkelt! Resultatet är mycket effektiv. Jag använder min vardag.Steg 1: Vad du behöver. (Jag tänker INXS) Som med många av mina instructables, detta inte tar mycket....

Kolfiber Urklipp

jag arbetar för ett företag som gör sammansatta delar för flygindustrin. Varje så ofta stött jag på laminat tillverkade av kolfiber eller glasfiber. Kändes som det var synd att låta dessa bitar som går till spillo, så jag började leta efter ett prakt...

Urklipp snabb n' lätt

Några minuter sedan jag bestämde mig för jag ska dra en snabb Schematisk av min senaste kretsdesign. Jag tänkte, "Jösses, jag önskar jag hade en Urklipp ska sätta ett blad för att skriva papper på så jag kunde dra detta med viss grad av stabilitet.&q...

Sugru pennhållare (till Urklipp)

Du behöver:ett urklippSugruen pennaSteg 1: Dela Sugru, avgör placering Vi använde fyra stycken, för att placera ovanför och under pennan i fyra ställen. Du kan förmodligen använda två stora bitar, eller tre små... Vad passar dig bäst!Besluta om Urkli...

Hur man gör en mini Urklipp

detta är en pocket sized Urklipp att ta lite anteckningar på.Steg 1: levererar. du behöver,2 brickor, 1 bult,1 bult,1 förpackning med post den anteckningar,1 bit av en laminat kakel,och 1 mini klipp.Steg 2: att sätta den toegether nu tar din kakel. s...

Harry Potter Urklipp

Denna lätt tutorial ska show dig hur man anpassar du Urklipp.Steg 1: materialDu behöver:Rött och guld papperEtt urklippSaxLimSteg 2: Lejonet Först, du kommer att behöva skriva ut och klippa ut en silhuett för Gryffindor lejonet.Steg 3: Spårning och s...

Urklipp

Som en del av min eviga strävan att organisera varje aspekt av mitt jordeliv, bestämde jag mig för jag behövde ett system för spårning av kundorder i verkstaden. Mitt minne tenderar att misslyckas mig ganska ofta nuförtiden, så jag har blivit ett sto...

3D-modellering och skriva ut din egen skugga kub

En initialer skugga kub är en kub där varje vy av kuben (överst, front och sida-vy) är profilen av en annan bokstav. Detta kommer från boken Gödel, Escher, Bach, av Douglas Hofstadter. En skugga kub är en riktigt trevlig grundläggande 3D design utman...

Skapa en illustrerade eBook

efter att ha läst otaliga berättelser till min unga tvillingpojkar jag gillade tanken på att kunna läsa dem en bok deras pappa hade skrivit. Skapa en bok också kändes som ett roligt, kreativt projekt. Efter kommer upp med en idé och skriva ut jag var...

Dodecahedron kalender - 2 sida - anpassningsbara

Av alla jag har tittat på, verkar det bara inte vara någon en kalendersom med alla alternativ jag har i åtanke:-Semester (eller texten, bilderna, designer för att förstora)-en enkel okomplicerad, lätt uppdatering-kunna mall-Plats för fler-Två sida fö...

QR koden kärlek Obs Needlepoint

äkta Geek kärlek hjärtans present!Steg 1: leveranser 1 - cross stitch material2 - virka tråd3 - stora ögon nål4 - broderi hoop5 - fyrkantig ramAlla stygn räknar och storlek av material beror på storleken av ram som används. Jag hittade en 10 "x 10&qu...

Den ultimata nördiga personliga presenten - gör ett korsstygn QR kod

jag gjorde detta som en present till min syster i jul. QR-kod, när skannas på en smartphone, leder till en video på YouTube - ett bildspel av barndom jul bilder.Det tog inte alltför lång tid att göra och hon älskade det, som det var något lite mer pe...