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
を文字列から解析し、これをItemTemplate
のListView
として適用しました。
ありがとう、グレース!それはdevsの99%のためにOKです。私にとっては、自分のXAMLパーサーがデータテンプレートを一から構築したいのではない。私が必要とするのは、DataTemplateを自分で構築することです。私はXamlReaderを使用していませんが、私のOmniXAML(v2)はクロスプラットフォームです。私はUWPとWPFで問題を発見しています。なぜなら、それらが隠れてテンプレートを作成するプロセス全体を制御することはほとんど不可能だからです。 – SuperJMN
@SuperJMN、そうだね、UWPでも不可能だと思う。それはxamarinのようなそれぞれの異なるプラットフォームのネイティブメソッドを使用することは可能ですか? xamarinでは、各プラットフォームにマッチするために 'DependencyService'を使います。申し訳ありませんが、ここであまり助けてはいけません。 –
いいえ、これは当てはまりません。それは可能ですが、私のパーサーには、他のパーサを使わずにモデルを読み込んで膨らませるという選択肢があります。 DataTemplateを拡張するために別のパーサに依存すると、その全体的な点が分かります。 – SuperJMN