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

WPF , Posted at : Jul/07/2015  
640 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

0237
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Microsoft Certified Trainer | IT Trainer at Native Enterprise | IT Consultant | Software Developer | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.
[Read More...]
Top Download 
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 6083 times  
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 4689 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 3554 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 3324 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 2706 times  
Links 
Certifications 
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News 
© Copyright 2006-2016   Rully Yulian MF   All rights reserved.