2009-10-19 2 views
2

Посмотрите на некоторые вопросы о SO, но никто не отвечает на мой вопрос.Привязка к действию UserControl в Silverlight?

Что я хочу достичь: У меня есть пользовательский элемент управления (позволяет называть его A), который перемещается по холсту с помощью раскадровки. И я хочу привязать другое положение пользовательского элемента управления (позволяет называть его B) на первый элемент управления.

Использование TransformToVisual (Application.Current.RootVisual) Я могу получить фактическое положение элемента управления A, но не могу понять, как получить привязку к Canvas.Left и Canvas.Top на этом.

Кто-нибудь понял, как выполнить эту задачу? Или заведите меня в правильное направление?

+0

ли контроль А и/или В пользовательских контроля или стандартных элементов управления? – AnthonyWJones

+0

В этом случае оба элемента управления A и B являются настраиваемыми элементами управления. –

ответ

1

Предполагаю, что вы перемещаете позицию управления A, обновляя свойства Canvas.Left и Canvas.Right? Если это так, то вам не нужно использовать TransformToVisual, вы можете просто связать их Canvas Top & Left свойства вместе:

<Canvas > 
    <TextBlock x:Name="ControlB" 
      Text="Some Text" 
      FontSize="15" 
      Canvas.Left="{Binding ElementName=ControlA, Path=(Canvas.Left)}" 
      Canvas.Top="{Binding ElementName=ControlA, Path=(Canvas.Top)}"/> 
    <TextBlock x:Name="ControlA" 
      Text="Some Text" 
      FontSize="13" 
      Canvas.Left="100" 
      Canvas.Top="100"/>  
</Canvas> 

С уважением, Colin E.

+0

Нет, как я уже упоминал в вопросе Control A, перемещается с помощью раскадровки –

+0

Конечно ... но раскадровка должна изменять некоторые свойства элемента управления, чтобы переместить его? В приведенном выше примере ut не имеет значения, какие изменения будут иметь свойства ControlA, значение XAML, код за значением, привязка или раскадровка - ControlB всегда будет следовать. – ColinE

+0

Связывание было первым, что я пробовал, и это не сработало –