Как программно создать прямоугольник и текстовый блок с обязательным элементом с помощью C #? - PullRequest
1 голос
/ 09 августа 2011

У меня есть следующий код, который я хочу создать программно. Где i должно быть целым числом в xaml! Это образец кода от VISIBLOX.

<Rectangle Margin="20,0,0,5" Height="10" Width="10" Fill="{Binding ElementName=chart, Path=Series[i].LineStroke}" VerticalAlignment="Center" />
        <TextBlock Margin="4,0,0,0" Text="{Binding ElementName=chart, Path=Series[i].DataSeries.Title}"  />
        <TextBlock Margin="4,0,0,0"  Text="(" HorizontalAlignment="Left" />
        <TextBlock Text="{Binding ElementName=chart, Path=Behaviour.Behaviours[0].CurrentPoints[i].Y, StringFormat=0.00}" Width="38" />
        <TextBlock Text=")" HorizontalAlignment="Right" />

Я могу создать наиболее программно, но я застрял в течение 2 дней с Path = Behaviour.Behaviours [0] .CurrentPoints [i] .Y невозможно увидеть, как я могу программно создать его!

Спасибо за помощь

Редактировать

Работа ИТ

TextBlock txtBlock3 = new TextBlock();
Binding txtBinding3 = new Binding();
txtBinding3.ElementName = "MainChart";
txtBinding3.Path = new PropertyPath("Behaviour.Behaviours[0].CurrentPoints[" + index +"].Y");
txtBlock3.SetBinding(TextBlock.TextProperty, txtBinding3);
txtBlock3.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
Panel.Children.Add(txtBlock3);

1 Ответ

2 голосов
/ 10 августа 2011

Предположительно, вы собираетесь строить эту привязку в цикле for?

Если это так, разве вы не можете сделать что-то вроде:

Binding b = new Binding { Path = new PropertyPath("Behaviour.Behaviours[0].CurrentPoints[" + i +"].Y”) };

Где находится индексатор в цикле for? Я не уверен, что полностью понимаю проблему, так что, может быть, вы могли бы уточнить немного контекста?

Если вы пытаетесь привязать к другому объекту, в зависимости от того, что доступно в CurrentPoints, вам может понадобиться просто привязаться к Benaviour.Behaviours [0] и использовать конвертер для возврата правильного значения Y точки.

Если вам нужна дополнительная помощь, просто дайте мне знать!

...