私はちょっとしたチェスゲームを書こうとしてきましたが、デバッグに役立つようにフィールドに脅威カウントを表示したいと思いました。しかし、それは機能しません。つまり、Text プロパティは "" のままで、その理由がわかりません。
for (int i = 0; i < grid.ColumnDefinitions.Count; i++)
{
for (int j = 0; j < grid.RowDefinitions.Count; j++)
{
...
TextBlock textBlock = new TextBlock();
Binding binding = new Binding("WhiteThreats");
binding.Source = game.board[i][j];
textBlock.SetBinding(TextBox.TextProperty, binding);
...
}
}
ここで、game.board[i][j] は次のように指定されたタイプの GameField です。
struct GameField : INotifyPropertyChanged
{
...
private int whiteThreats;
public event PropertyChangedEventHandler PropertyChanged;
public int WhiteThreats
{
get { return whiteThreats;}
set
{
whiteThreats = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("WhiteThreats"));
}
}
...
}
頭に浮かんだ他のすべての可能性をチェックしました。TextBox が正しく表示され、binding.Source も正しく割り当てられます。私は今立ち往生しています。