Silverlight 3 - Положение Привязки данных прямоугольника на холсте

Можно интересоваться FAQ Linux для clock_gettime(CLOCK_REALTIME)

5
задан Blounty 28 October 2009 в 13:53
поделиться

4 ответа

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

public class CustomItemsCollection
    : ItemsControl
{
    protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
    {

        FrameworkElement contentitem = element as FrameworkElement;
        Binding leftBinding = new Binding("Left"); // "Left" is the property path that you want to bind the value to.
        contentitem.SetBinding(Canvas.LeftProperty, leftBinding);

        base.PrepareContainerForItemOverride(element, item);
    }

}
7
ответ дан 14 December 2019 в 01:10
поделиться

Вы правы, ContentPresenter вставлен между Canvas и Rectangle. Один из способов обхода - установить левое поле вместо Canvas.Left :

<Rectangle Stroke="LightGray" Fill="Black" StrokeThickness="2" 
      RadiusX="15" RadiusY="15" Height="25" Width="25">
    <Rectangle.Margin>
        <Thickness Left="{Binding XAxis}"/>
    </Rectangle.Margin>
</Rectangle>
1
ответ дан 14 December 2019 в 01:10
поделиться

Добавьте следующее в свой ItemsControl

 <ItemsControl.ItemContainerStyle>
    <Style TargetType="{x:Type ContentPresenter}">
      <Setter Property="Canvas.Left" Value="{Binding XPath=XAxis}"/>
    </Style>
  </ItemsControl.ItemContainerStyle>

Нет необходимости в каких-либо пользовательских элементах управления

-2
ответ дан 14 December 2019 в 01:10
поделиться

Вы не можете использовать ItemsControl.ItemContainerStyle в Silverlight. Его не существует. Он существует только на нескольких классах конечного уровня, таких как сам ListBox .

2
ответ дан 14 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: