2016-10-18 11 views
0

私はXAMLパーサを作成しています.UWPクラスと対話するためにコードからDataTemplateを生成する必要があります。コードからUWPでDataTemplateを作成

DataTemplateクラスにはLoadContent()メソッドがありますが、どのように使用できますか?読み込むコンテンツを指定する方法はありますか?ところで

、私はIDataTemplateインターフェイスを実装しようとしているが、それは内部なので、私はDataTemplateから派生しなければなりませんでした。

答えて

1

DataTemplateクラスにはLoadContent()メソッドがありますが、どうすれば使用できますか?読み込むコンテンツを指定する方法はありますか?

あなたはDataTemplate.LoadContent methodを参照することができ、サンプルコードは、実行時に境界線の外観を変更するLoadContentメソッドを使用する方法を示し、この文書でもあります。これは、ロードするコンテンツを指定する方法です。ここで

StringReader reader = new StringReader(
    @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""> 
    <Ellipse Width=""300.5"" Height=""200"" Fill=""Red""/> 
    </DataTemplate>"); 
var template = XamlReader.Load(await reader.ReadToEndAsync()); 
ListView lv = new ListView(); 
lv.ItemTemplate = template as DataTemplate; 
ObservableCollection<int> coll = new ObservableCollection<int>(); 
for (int i = 0; i < 20; i++) 
{ 
    coll.Add(i); 
} 
lv.ItemsSource = coll; 
rootGrid.Children.Add(lv); 

は、私はあなたがXAMLパーサーを使用しての背後にあるコードで全体DataTemplateを作成したい、しかし、その後、あなたはこのような例をコードすることができるResourcesに存在するものをロードしない可能性があることを理解します私はXamlReaderを使用してDataTemplateを文字列から解析し、これをItemTemplateListViewとして適用しました。

+0

ありがとう、グレース!それはdevsの99%のためにOKです。私にとっては、自分のXAMLパーサーがデータテンプレートを一から構築したいのではない。私が必要とするのは、DataTemplateを自分で構築することです。私はXamlReaderを使用していませんが、私のOmniXAML(v2)はクロスプラットフォームです。私はUWPとWPFで問題を発見しています。なぜなら、それらが隠れてテンプレートを作成するプロセス全体を制御することはほとんど不可能だからです。 – SuperJMN

+1

@SuperJMN、そうだね、UWPでも不可能だと思う。それはxamarinのようなそれぞれの異なるプラットフォームのネイティブメソッドを使用することは可能ですか? xamarinでは、各プラットフォームにマッチするために 'DependencyService'を使います。申し訳ありませんが、ここであまり助けてはいけません。 –

+0

いいえ、これは当てはまりません。それは可能ですが、私のパーサーには、他のパーサを使わずにモデルを読み込んで膨らませるという選択肢があります。 DataTemplateを拡張するために別のパーサに依存すると、その全体的な点が分かります。 – SuperJMN

関連する問題