Я пытаюсь привязать свойства содержимого программно сгенерированных кнопок к объекту индексатора.Мой объект индексатора выглядит так:
internal class Indexer
{
private int[,] cells;//values from 0 to gridSize^2
public int this[int x, int y]
{
get { return cells[x, y]; }
}
public Indexer(int gridSize)
{
cells = new int[gridSize, gridSize];
FillCells(gridSize);
}
private void FillCells(int size)
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
cells[i, j] = i * size + j;
}
}
}
}
Кнопки и привязки создаются внутри двух вложенных циклов и добавляются в единую сетку.В качестве теста я связал все свойства Button.Content с единичным свойством, подобным этому:
Button myButton = new Button()
mazeWindow.XAML_Grid.Children.Add(myButton);
Binding myBinding = new Binding();
myBinding.Source = this;
myBinding.Path = new PropertyPath("GridSize");
myButton.SetBinding(Button.ContentProperty, myBinding);
И это, кажется, работает нормально.Однако я не смог понять, как изменить код привязки, чтобы содержимое моей кнопки было привязано к отдельным ячейкам в моем индексаторе.Поскольку конструктор PropertyPath может быть перегружен параметрами пути, я предположил, что мог бы передать свой объект индексатора и два целых числа в качестве параметров для установки привязки следующим образом:
myBinding.Source = this.indexerObject;
myBinding.Path = new PropertyPath("Indexer",i,j);
Но это приводит к ошибке пути BindingExpression: свойство Indexerне найден в 'объекте' '' Индексатор '
Я предполагаю, что в индексаторах должно быть что-то, чего я не понимаю (никогда не использовал их ранее), или мой подход к этой проблеме каким-то образом ошибочен.