Two Xaml Tricks

|

1. Declare array object in xaml:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:sys
="clr-namespace:System;assembly=mscorlib">

   
<Grid>
       
<ListBox Width="200" Height="200" BorderBrush="Navy" BorderThickness="1">
           
<ListBox.ItemsSource>
               
<x:Array Type="{x:Type sys:String}">
                   
<sys:String>Paviel Dedved</sys:String>
                   
<sys:String>Andriy Shevchenko</sys:String>
                   
<sys:String>Paolo Maldini</sys:String>
                   
<sys:String>Robert Baggio</sys:String>
                   
<sys:String>Alessandro Del Piero</sys:String>
               
</x:Array>
           
</ListBox.ItemsSource>
       
</ListBox>
   
</Grid>
</Page>

2. Declare inline code in Xaml:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml" 
           x:Class
="MyPage">
 
<x:Code>
   
<![CDATA[
      private void ButtonClickEventHandler(Object sender, RoutedEventArgs e)
      {
          MessageBox.Show("Hello Xaml!");
      }
   
]]>
 
</x:Code>
 
<Grid>
   
<Button Width="200" Height="60" Content="Click Me" Click="ButtonClickEventHandler"/>
 
</Grid>
</Page>

Note that, when specifying inline code in xaml, you also need to specify the x:Class and the Xaml should be compiled before getting execution, which means that XamlReader.Load() method cannot interpret the xaml which contains inline code.

0 comments: