FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

XAML名前空間

 XAMLでBlend SDK等のライブラリや自分が作ったクラス等を使用したい場合は、XAML名前空間を宣言する必要があります。
 例えばLivetを使用してWindowを作成すると以下の様になります。
<Window x:Class="LivetWPFApplication1.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
        xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
        xmlns:l="http://schemas.livet-mvvm.net/2011/wpf"
        xmlns:v="clr-namespace:LivetWPFApplication1.Views"
        xmlns:vm="clr-namespace:LivetWPFApplication1.ViewModels"
        Title="MainWindow" Height="350" Width="525">

</Window>
 名前空間の宣言は、
xmlns:プレフィックス="名前空間の識別子(URI)" となります。
 プレフィックスは他のプレフィックスと重ならなければ自由に指定できます。
 名前空間の識別子の入力はエディターがサポートしてくれるので難しくありません。
 この例の場合、7行目(プレフィックスv)は、このプロジェクト内で作成したLivetWPFApplication1.Views名前空間に定義されたクラスを使用するための宣言です。同様に8行目(プレフィックスvm)はLivetWPFApplication1.ViewModels名前空間のクラスを使用するためです。
 C#で作成したクラスを使用する場合はViewsやViewModelsの様に、使用したいクラスが存在するCRL名前空間をそれぞれ宣言する必要があります。
 これは別プロジェクトで自作ビヘイビア等を作成した場合も同様です。
 では、ビヘイビア等のライブラリを使用する際は、使用したい機能に合わせてXAML名前空間をいくつも宣言しなくてはならないのでしょうか?
 もちろん違います。
 上記のXAMLコードの6行目を見てください。この行はLivetの各種機能をXAMLで使用するための宣言です。
 XAML名前空間を1つ宣言するだけで、Livetの様々な機能が使用できるようになります。これは、複数のCLR名前空間に1つのXAML名前空間を割り当てているからです。
 例えば、アクションとそのアクションで使用するメッセージクラスを以下の様に作成したとします。 XAML名前空間
 ここには2つのCLR名前空間がありますが、これを1つのXAML名前空間に集約するには、AssemblyInfo.cs(Properties内にあります)に以下のコードを追記します。
using System.Windows.Markup;

[assembly: XmlnsDefinition("http://sample/", "ClassLibrary1.Messages")]
[assembly: XmlnsDefinition("http://sample/", "ClassLibrary1.Actions")]
 System.Windows.Markup.XmlnsDefinitionAttributeを使用して、XAML名前空間の割り当てができます。
 第1引数に割り当てたいXAML名前空間を指定し、第2引数にCLR名前空間を指定します。
 こんな感じで、複数のCLR名前空間を1つのXAML名前空間に集約できます。
 これをXAMLで使用すると以下の様になります。
<Window x:Class="LivetWPFApplication1.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
        xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
        xmlns:l="http://schemas.livet-mvvm.net/2011/wpf"
        xmlns:v="clr-namespace:LivetWPFApplication1.Views"
        xmlns:vm="clr-namespace:LivetWPFApplication1.ViewModels"
        xmlns:s="http://sample/"
        Title="MainWindow" Height="350" Width="525">
    
    <Window.DataContext>
        <vm:MainWindowViewModel/>
    </Window.DataContext>
    
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Closed">
            <l:DataContextDisposeAction/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    
    <Grid>
        <Button Content="ボタン">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Click">
                    <s:XxxAction>
                        <l:DirectInteractionMessage>
                            <s:XxxMessage/>
                        </l:DirectInteractionMessage>
                    </s:XxxAction>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>
    </Grid>
</Window>
 XAML用ライブラリを作成するときは名前空間の割り当てをしておくと非常に使いやすくなります。
 サンプルなのでかなり適当なURIにしましたが、もっとわかりやすい名前を付けることをお勧めします。
 わかりやすい名前にしておけば、XAMLエディターで名前空間を宣言する際に入力が楽になります。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
全記事表示リンク

全ての記事を表示する

カテゴリ
タグリスト

月別アーカイブ
11  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09 
最新記事
リンク
最新コメント
検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。