2016-06-24 9 views
0

Я пытаюсь перемещать и перемещать элементы с помощью мыши и кода. Но я думаю, что я что-то упустил или сделал что-то не так. Поэтому я создал небольшое примерное приложение. Это просто пустой МОФ приложение с помощью этой функции MainWindowЧто не так с Canvas.SetTop (элемент, позиция)

public MainWindow() 
    { 
     InitializeComponent(); 
     Label lText = new Label(); 
     lText.Content = "this is my test label"; 
     lText.Height = 50; 
     lText.Width = 50; 
     lText.Background = Brushes.Aqua; 
     // do I really need to do this? 
     lText.VerticalAlignment = System.Windows.VerticalAlignment.Top; 
     lText.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; 
     // this part already fails 
     Canvas.SetTop(lText, 20); 
     Canvas.SetLeft(lText, 10); 
     this.Content = lText; 
    } 
+2

@Clemens: Почему комментарий –

ответ

0

Решение было то, что левый и свойства Top должны быть установлены внутри Xaml, прежде чем вы сможете его прочитать. Я всегда получал NaN, и поэтому не мог установить правильное значение.

1

Прикрепленных свойства Canvas.Left и Canvas.Top (что в коде позади устанавливается Canvas.SetLeft и Canvas.SetTop методов) только оказывает влияние на элемент, который является прямым потомком контроль холста.

Так объявить Canvas в качестве содержимого элемента в XAML вашей MainWindow в:

<Window ...> 
    <Canvas x:Name="canvas" /> 
</Window> 

Затем добавить элемент в Canvas' Children коллекции в коде позади:

Canvas.SetTop(lText, 20); 
Canvas.SetLeft(lText, 10); 
canvas.Children.Add(lText); 
+0

Хорошо - понимал. Как я могу перемещать элемент управления, не будучи дочерним элементом холста. Я имею в виду, если у меня вообще нет холста, как в моем примере. – freeskydiver

+0

Если у вас нет холста, добавьте его в свой XAML. Конечно, есть и другие способы позиционирования элемента, например, установка его «Margin» или «LayoutTransform» или «RenderTransform», но Canvas - это типичный способ сделать это. – Clemens

 Смежные вопросы

  • Нет связанных вопросов^_^