現在、WPFでUniformGridにデータを設定しようとしています。実行時にUniformGridの子アイテムを変更します。
いくつかのコンテキスト:私は2D Sidescrollerを構築しようとしています(WPFはこれに最適なソリューションではありません。Unityなどを使用する必要があります)。さて、マップについては、UniformGridを使用し、マップのタイルとして子を使用することを考えていました。
これまでのところ、私は、コードのこの部分を使用してUniformGridに空の子を追加しています:
MapGrid
は私UniformGridある
private void CreateMapTiles() {
for (int i = 0; i < 30; i++) {
for (int j = 0; j < 45; j++) {
this.MapGrid.Children.Add(new Image());
}
}
}
。
だから、結局は30x45人の子供が欲しいです。 これで、CodeBehindでそれらの子を動的に編集する、つまりそれらの子をイメージにしたいと思います。別の言い方をすれば、インデックス5の子どもが自分のリソースから別のイメージを表示するように更新したいと思います。
私はこのような何か使用して考えていた:
this.MapGrid.Children[1] = new Image() { Source = ReturnSomeSource() };
をしかし明白な理由のために、これは動作しません。
実行時に子に値を割り当てる方法はありますか? 私もthis.MapGrid.Children[1].SetCurrentValue()
で遊んだことがありますが、どちらも私がやっていたことを本当に理解していませんでした。
実行時にUniformGridの子を変更する可能性はありますか? 通常のグリッドはより良い仕事をしますか? UniformGridの子供たちは、それ以上の努力なしに必要な方法で自動的に配置され、サイズ調整されるので、私はそれを避けたかったのです。
これは、データバインディングを使用するMVVMパターンの方がはるかに簡単です。コンテナとして 'UniformGrid'を持つ' ObservableCollection'にバインドされた 'ItemsControl'を使用してください。コレクションのアイテムを追加/編集/削除するだけで、UIが自動的に調整されます。 –
私は本当にMVVMのパターンについて何も知らないことを恐れていますが、これを処理するうまい方法のように思えるので、私はそれに読みを付けるべきだと思います。ヒントありがとう! – rqnn