Как правильно использовать переплет в C# - PullRequest
0 голосов
/ 30 мая 2020

Я хочу привязать фон WPF Rectangle к свойству Bru sh другого элемента.

Инициализация выглядит так:

MazeElement nextElement = new MazeElement();
nextElement.Position = new Point(xIndex, yIndex);
nextElement.BackgroundColor = Brushes.Aqua;
MazeElements.Add(nextElement);

Binding bg = new Binding {Source = MazeElements[Index(xIndex, yIndex)]};

Rectangle nextRect = new Rectangle();
nextRect.Height = MazeGridSize;
nextRect.Width = MazeGridSize;
nextRect.Fill = Brushes.White;
nextRect.Stroke = Brushes.Gray;
nextRect.StrokeThickness = 2;

nextRect.SetBinding(Shape.FillProperty, bg);

temp.Children.Add(nextRect);
Canvas.SetLeft(nextRect, xIndex * MazeGridSize);
Canvas.SetTop(nextRect, yIndex * MazeGridSize);

Где моя ошибка? Я не понимаю, как использовать привязку со стороны C#.

1 Ответ

0 голосов
/ 30 мая 2020

Во-первых, вы не предоставляете нам достаточно информации. Мы не можем увидеть всю природу типа MazeElement. Но я предполагаю, что BackgroundColor является свойством класса MazeElement

Во-вторых, привязка имеет Source, объект в вашем случае nextElement и PropertyPath, в вашем случае BackgroundColor. Следовательно, ваш объект привязки должен быть:

Binding bg = new Binding {Source = nextElement, Path = new PropertyPath("BackgroundColor") };

В вашем случае исходное свойство имеет тот же тип, что и свойство целевой зависимости, поэтому приведенное выше будет делать то, что вы хотите. Если это не так, вы можете установить конвертер на привязку - посмотрите, если вам это понадобится в другой ситуации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...