2015年12月13日日曜日

xaml のメモ

http://pro.art55.jp/?eid=1176521
xaml の別アセンブリからxamlをマージする

どこかの Window の xaml ファイルに対して。。
 <Window.Resources>
  <ResourceDictionary>
   <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary
pack://application:,,,/(アセンブリ名);component/(プロジェクト内のパス)
   </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
 </WindowResources>

xaml の ignorable が複数あるときは、スペースで区切って並べる。
https://msdn.microsoft.com/ja-jp/library/aa350024(v=vs.90).aspx


mc:AltenateConent + mc:Choice Requires + mc:Fallback でifdef のようなことができるらしい。
http://kirmir.com/2015/02/24/compilation-directives-to-control-xaml-content/

--
Wpfのカスタムコントローラーを作るとき、Generic.xaml のスタイルが既定のスタイルとして使われる。
なので、ファイル分割したいときは、ResourceDictonary を作成&その内部でスタイルを定義した後、

<ResourceDictionary.MergedDictionaries>
  <ResourceDictionary Source="/コンポーネント名;component/Themes/MyContorlTheme.xaml" />
</ResourceDictionary.MergedDictionaries>

のようにマージしておかないと、実行時にエラーが出る。(よくわかんなくてよくはまった)。