2011-01-27 3 views
1

Я работаю над приложением, использующим функцию перетаскивания. Когда я перетаскиваю некоторые элементы поверх других элементов, я хотел бы показать, находятся ли они в верхней части или в нижней части элемента, задав свойство границы элемента, которым они располагаются динамически (в отличие от xaml).Свойство WPF Border не работает правильно

Я изучил это и использовал примеры, но ни один из них не работает. Вот код, который у меня есть, который вызывается, когда операция перетаскивания выполняется над элементом сетки.

private void Grid_DragEnter(object sender, DragEventArgs e) 
    { 
     Grid grid = (Grid)sender; 
     grid.Background = Brushes.Cornsilk; 

     Border border = new Border(); 
     border.BorderBrush = Brushes.Black; 
     border.BorderThickness = new Thickness(5, 10, 15, 20); 
     border.Background = Brushes.Black; 
     border.Padding = new Thickness(10); 
     border.Child = grid; 
    } 

Код, указанный выше, является только тестовым кодом, чтобы я мог видеть, что граница отображается. Как только я получу это, я установил верхнюю или нижнюю границу в разное время, в зависимости от того, находятся ли они выше или ниже центра элемента сетки.

ответ

5

Вы устанавливаете дочерний элемент границы, но сама граница должна быть добавлена ​​в какой-либо контейнер, чтобы он был видимым.

Это, как говорится, вы можете посмотреть в Adorners. Они предназначены именно для этого сценария и не требуют изменения визуальной иерархии вашего пользовательского интерфейса во время выполнения.

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