質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

5502閲覧

XamlでGenericなオブジェクトを作成する

defnishbash

総合スコア22

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2016/01/11 12:47

https://msdn.microsoft.com/ja-jp/library/ms750476(v=vs.110).aspx
のページを参考にジェネリックなオブジェクトを作成しようとしました。

XML

1<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 2 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 3 xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib" 4 xmlns:sys="clr-namespace:System;assembly=mscorlib"> 5 <scg:List x:Key="test" sys:TypeArguments="sys:String"/> 6</ResourceDictionary>

サンプルでこのように忠実に再現したつもりが、以下ようなエラーを吐きます。

タグ 'List' は、XML 名前空間 'clr-namespace:System.Collections.Generic;assembly=mscorlib' にありません。 行 5 位置 6

プロパティ "TypeArguments" は "clr-namespace:System;assembly=mscorlib" 名前空間に存在しません。

プロパティ 'TypeArguments' が型 'List' に見つかりませんでした。

どの部分が間違っているのか、どのように改変したらよいのか、ご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

私もやったことがありませんでしたので、興味本位で調べてみました。

タグ 'List' は、XML 名前空間 'clr-namespace:System.Collections.Generic;assembly=mscorlib' にありません。 行 5 位置 6

WPFアプリケーションの場合、x:TypeArgumentsを利用したジェネリック型の使用には、「XAML ファイルのルート要素のみに限定される」という制約があるそうです。
(詳細は、define様が参考にされたページ内に「XAML 2006 および WPF ジェネリック XAML の使用方法」とい う項目がありますので、そちらをご覧ください。)

おそらく、その制約にひっかかっているため、エラーが出ていると思われます。

プロパティ "TypeArguments" は "clr-namespace:System;assembly=mscorlib" 名前空間に存在しません。

「sys:TypeArguments」を「x:TypeArguments」に直してください。

以上です。

投稿2016/01/12 05:47

daichan

総合スコア225

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defnishbash

2016/01/12 14:37

確かにそのような記述がありますね。ただその下の"XAML2009....依存しないXAML"の部分には任意の場所で定義できると記述されています。これに適用できるように改変するとしたらどのようにしたらよいのでしょう。 sys: x: 写し間違いですね。ありがとうございます
daichan

2016/01/13 00:18

> WPF で、.NET Framework 4 を対象としている場合は、XAML 2009 の機能を x:TypeArguments と共に使用できますが、Loose XAML (マークアップ コンパイルされていない XAML) に限定されます。WPF 向けにマークアップ コンパイルされた XAML、および XAML の BAML 形式は、現在、XAML 2009 のキーワードと機能をサポートしていません。XAML をマークアップ コンパイルする必要がある場合、「XAML 2006 および WPF ジェネリック XAML の使用方法」に記載された制約に従って操作する必要があります。 上記のように書かれていますので、WPFでXAML2009はまだサポートされていないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問