Ах, хорошо. В этом случае код для MouseDragElementBehavior , безусловно, доступен, и даже если это не так, вы можете просто открыть сборку с помощью JustDecompile или что-то еще и просмотреть его таким образом.
Если вы посмотрите документацию для MouseDragElementBehavior , вы увидите следующее:
Свойство XProperty Dependency для позиции X перетаскиваемого элемента относительно слева от элемент root.
Таким образом, в основном вы пытаетесь связать одно свойство зависимости (TextBlock.Text) с другим (MouseDragElementBehavior.X), но для того, чтобы это работало, они должны быть часть того же визуального или логического дерева (которым они не являются, MouseDragElementBehavior является поведением). Если одно из них было прикрепленным свойством , то вы могли бы связать их напрямую, но в вашем случае вы должны связать их вместе либо со свойством в DataContext, поддерживающем INP C, либо с каким-либо прокси-объект .
Однако, даже если вы сделаете это, вы столкнетесь с проблемами. Если вы нажмете кнопку «Go to Live Visual Tree» во время работы приложения и посмотрите на свойства вашего элемента управления SevenOfSpades, вы увидите следующее:
Пока все хорошо. Теперь немного перетащите элемент управления и повторите этот процесс. Внезапно появилось поле RenderTransform:
Оглядываясь назад на код для MouseDragElementBehavior, вы обнаружите, что достаточно точно, что поведение выполняет перетаскивание, изменяя преобразование рендеринга .
Таким образом, вы пытаетесь установить положение с помощью Canvas.Top/Canvas.Left, но поведение задается с помощью применения смещения преобразования визуализации. Выбери один. Я лично использую MVVM, где все реализовано в слое модели представления, поэтому легко привязать Canvas.Top/Canvas.Left к свойствам там. Если вы хотите продолжить использовать MouseDragElementBehavior, вам нужно вместо этого связать положение ваших карточек, а также текст TextBlock с преобразованием рендеринга:
<Canvas>
<Rectangle Name="SevenOfSpades" Width="60" Height="80" Fill="Blue">
<Rectangle.RenderTransform>
<TranslateTransform X="350" Y="124" />
</Rectangle.RenderTransform>
<mb:Interaction.Behaviors>
<mb:MouseDragElementBehavior ConstrainToParentBounds="True" />
</mb:Interaction.Behaviors>
</Rectangle>
<TextBlock Text="{Binding ElementName=SevenOfSpades, Path=RenderTransform.Value.OffsetX}" />
</Canvas>