【WPF】Stringやintなどのシステム型をXamlで直接生成する。
<Window
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"
x:Class="hogehoge"
Title="test" Width="100" Height="100">
<ListBox Margin="10">
<ListBox.ItemsSource>
<x:Array Type ="{x:Type sys:String}">
<sys:String>foo</sys:String>
<sys:String>bar</sys:String>
</x:Array>
</ListBox.ItemsSource>
</ListBox>
</Window>
とすれば簡単に生成できる、よく質問される。
詰まるポイントとしては
- xmlnsでsysと生成している部分のasseemblyを指定していないか、Systemが設定されている。インテリジェンスを使うとよく起こる。ちゃんとmscorlibを設定しよう。
- x:Array、sys:Stringはインテリジェンス候補として表示されない。全て手動で入力しないといけない。
- x:ArrayのTypeを設定したり、全てのコンテンツを入力しないと不適当なエラーが表示される。
つまり、エラーやインテリジェンスに惑わされない事が必要。正常なコードでもビルドするまでエラーが消えないことがよくあるので、WPFにおいてはVIsualStudioをあんまり信用しちゃいけませんよって事。
私もBlend使い始めた時は、何度も騙されました(笑)