0

    キャンバスを使用して、各プレーヤーのボタンとデータバインドされたアイテムの配置されたセットを保持するゴルフゲーム追跡プログラムを構築しようとしています。ゲームの人数は動的であるため、キャンバスをその場で作成し、その場でバインドできるようにする必要があります。私が抱えている問題は、データバインディングの設定です。コードでバインドしようとすると、バインディングのテキスト(text = {Binding})は、実際のバインディングではなく文字列リテラルであるかのように常に出力されます。これを回避するために、キャンバスのテンプレートを作成しようとしましたが、新しいプレーヤーを作成するときに、テンプレートを新しいキャンバスに実際に適用する方法が見つかりません。

    それで、これらすべてを念頭に置いて、A)すべてのコントロールを使用してテンプレートキャンバスを作成し、各プレーヤーにコピーしてバインドできるようにするか、B)XAMLに頼らずにテキストバインディングを動的に作成するための最良の方法は何ですか?

編集:テキストブロックの作成方法を明確にするために、以下が追加されました。

TextBlock newBlock = new TextBlock
        {
            Text = "{Binding}",
            FontSize = 42,
            DataContext = Player.SomeStat,
            Name = Player.PlayerName ,

        };

テキストブロックの画面に表示される値は(本来あるべきものではなく)次のとおりです。{Binding}

4

2 に答える 2

1

コードで Binding を作成するには、追加の手順を実行する必要があります。

object myDataObject = DataContext;
Binding myBinding = new Binding();
myBinding.Source = myDataObject;
myBinding.Path="."; // not sure if required
newBlock.SetBinding(TextBlock.TextProperty, myBinding);
于 2012-08-30T07:18:02.297 に答える
0

コードが存在する Control インスタンスの datacontext にバインドすると仮定します...

textBlock.SetBinding(TextBlock.TextProperty, new Binding("Foo"));
textBlock.DataContext = this.DataContext;
于 2012-08-30T23:39:09.117 に答える