How to Map Single XML Namespace to Multiple .NET Namespace in WPF

Posted at : Jul/07/2015
990 Views | 0 Comments

Apabila kita ingin menggunakan beberapa member di dalam sebuah class di dalam file xaml secara deklaratif maka haruslah ditambahkan sebuah xmlns yang merujuk ke namespace dimana class tersebut berada dengan memberikan prefix terhadap tipe data tersebut. Pertanyaan lain muncul yaitu bagaimana caranya apabila kita ingin xmlns tersebut merujuk ke beberapa namespace sekaligus dimana didalamnya terdapat beberapa class yang berbeda-beda?

Teknik yang digunakan untuk merujuk kepada sebuah namespace di dalam xaml yaitu dengan mengetikkan xmlns berikut di dalam Window :

   1: <Window x:Class="Chapter_1.MainWindow"
   2:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   3:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   4:         xmlns:localType="clr-namespace:Chapter_1"
   5:         Title="MainWindow" Height="350" Width="525">

Perhatikan baris-4, prefix yang digunakan untuk merujuk ke sebuah tipe data Chapter_1 yaitu localType, sehingga member-member yang terdapat di dalam class tersebut dapat diakses secara deklaratif (asumsikan nama project tersebut Chapter_1). Lalu apa sebenarnya xmlns yang berisi url selain localType diatas? Apakah url tersebut riil dan dapat diakses? Jawabannya yaitu url tersebut hanya merupakan sebuah identifier yang merujuk ke beberapa namespace yang terdapat di dalamnya terdapat beberapa class yang berbeda dan url tersebut tentunya tidak riil dalam artian bukan url yang sesungguhnya dapat di browse.

Ok, mari kita praktekkan bagaimana melakukan mapping multiple namespace ke dalam sebuah xml namespace. Berikut adalah langkah-langkahnya :

1. Buat sebuah WPF Application Project kedalam sebuah solution.

2. Tambahkan Class Library Project kedalam solution tersebut. Kemudian tambahkan referensi ke System.Xaml.dll dari project Class Library.

3. Ubah kode yang terdapat di dalam file Class1.cs menjadi berikut ini :

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Threading.Tasks;
   6:  
   7: using System.Windows.Markup;
   8:  
   9: [assembly:XmlnsDefinition("http://native-enterprise.net", "Utilities")]
  10: namespace Utilities
  11: {
  12:     public class Configuration
  13:     {
  14:         public string ConnectionStringName { get; set; }
  15:  
  16:         public override string ToString()
  17:         {
  18:             return "ConnectionString Name: " + ConnectionStringName;
  19:         }
  20:     }
  21: }

Tambahkan namespace terhadap System.Windows.Markup seperti yang terlihat pada baris-7 dan tambahkan atribut seperti yang terlihat di baris-9 dan diisi dengan url beserta namespace yang digunakan yang nantinya url tersebut digunakan sebagai xmlns di xaml.

4. Tambahkan class baru kedalam project Class Library tersebut dan ubah kode didalamnya menjadi seperti berikut ini:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Threading.Tasks;
   6:  
   7: using System.Windows.Markup;
   8:  
   9: [assembly:XmlnsDefinition("http://native-enterprise.net","Functions")]
  10: namespace Functions
  11: {
  12:     public class Accounting
  13:     {
  14:         public int AccountNumber { get; set; }
  15:         public override string ToString()
  16:         {
  17:             return "Account Number: " + AccountNumber.ToString();
  18:         }
  19:     }
  20: }

Langkah-4 ini sama dengan langkah-3, yang membedakan hanya namespacenya saja dan perhatikan url nya harus sama dengan yang terdapat di langkah-3. Build solution tersebut.

5. Tambahkan referensi ke file dll project Class Library dari project WPF Application. Buka file MainWindow.xaml yang terdapat di WPF Application project dan ketikkan kode berikut ini :

   1: <Window x:Class="Chapter_1.MainWindow"
   2:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   3:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   4:         xmlns:localType="clr-namespace:Chapter_1"
   5:         xmlns:refType="http://native-enterprise.net"
   6:         Title="MainWindow" Height="350" Width="525">
   7:     <StackPanel>
   8:         <Button FontSize="22">
   9:             <refType:Accounting AccountNumber="15"/>
  10:         </Button>
  11:         <Button FontSize="22">
  12:             <refType:Configuration ConnectionStringName="NativeEnt Connection"/>
  13:         </Button>           
  14:     </StackPanel>
  15: </Window>

Perhatikan kode xmlns pada baris-5 dimana xmlns tersebut merujuk ke url yang sudah dibuat sebelumnya di Class Library project. Untuk mengakses member property yang terdapat di dalam beberapa namespace tersebut dilakukan dengan menggunakan prefix yang sudah diberikan, pada contoh diatas prefix nya yaitu refType. Selanjutnya kita tinggal akses property tersebut melalui intellisense seperti yang dapat dilihat pada baris-9 dan baris-12.

Ok, selamat mencoba :-)


[Comments]


[Write your comment]

Name (required)

Email (required-will not published)

 
Comment
HL90
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6982 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.