2

CustomControldll ( ) に派生クラスがありますMyNamespace.UI。メイン アプリケーションでこのコントロールを使用するにはどうすればよいですか? プロジェクトへの参照を追加してから、カスタム XAML 名前空間を使用して自分の名前空間を指定しようとしましたが、見つかりません:

<Page ...
    xmlns:ui="using:MyNamespace.UI"
    ...>
<Canvas>
    <ui:MyControl />
</Canvas>
</Page>

エラーが発生します:

「MyControl」という名前は名前空間「using:MyNamespace.UI」に存在しません。

いろいろと調べてみると、以下の引用が見つかりました。

XAML 名前空間のバッキング型を定義するアセンブリの名前がマッピングで指定されていません。アセンブリを使用できるロジックは、アプリ定義レベルで制御され、基本的なアプリの展開とセキュリティの原則の一部です。プロジェクト設定で、XAML のコード定義ソースとして含めるアセンブリを依存アセンブリとして宣言します。

http://msdn.microsoft.com/en-gb/library/windows/apps/jj150588.aspx

プロジェクト設定の「依存アセンブリ」設定の方向を教えてもらえますか?

編集ルート名前空間プロジェクトの設定が自分のコントロールの名前空間と一致していることを確認した後 ( MyNamespace.UI)、プロジェクトをコンパイルすることができました。しかし、次の情報でクラッシュが大量に発生するため、実行できません。

WinRT 情報: 'MyNamespace.UI.MyControl' 型のインスタンスを作成できません [行: 44 位置: 37]

ただし、コントロールを作成できなかった理由についての情報はありません... のコンストラクターをステップスルーするMyControlと、 で例外がスローされInitializeComponent()ます。これは、私の UserControl ( MyControl)の XAML です。

<UserControl
    x:Class="MyNamespace.UI.MyControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300"
    d:DesignWidth="400">

    <Grid>

    </Grid>
</UserControl>

編集2コントロールを削除しGrid、ビルドして実行したところ、機能したので、Gridコントロールを元に戻しましたが、それでも機能しました。とても奇妙です。

4

1 に答える 1

1

MyNamespace.UIアセンブリにRootNamespace一致するプロパティがあることを確認する必要がありますMyNamespace.UI。このプロパティは、プロジェクト設定ページでは変更できませんが、メモ帳などで変更できます。私RootNamespaceは に設定されてUIいて、変更すると機能し始めました。

于 2013-02-06T14:31:55.423 に答える