Я создал пользовательский элемент управления canvas, унаследованный от WPF Canvas
. Я использую это так в главном окне -
<ScrollViewer
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
<RTD:RTDesignerCanvas
Margin="5"
Background="White"
x:Name="canvas1"
Focusable="True"
AllowDrop="True">
</RTD:RTDesignerCanvas>
</ScrollViewer>
Все работает нормально, но когда я пытаюсь установить положение элементов управления внутри него, как это
Canvas.SetTop(item, 200);
полосы прокрутки не видны, а управление где-то скрыто. Интересно, что если я добавлю еще один элемент управления, полосы прокрутки будут видны, и я смогу прокрутить вниз, чтобы увидеть предыдущий элемент управления.
Я пытался использовать
base.InvalidateVisual();
base.UpdateLayout();
base.InvalidateArrange();
после смены предметов Top
или Left
но ничего не происходит; Я что-то упустил или это происходит из-за какой-то ошибки?
Обновление
, чтобы уточнить, скажем, у меня есть холст, имеющий width
, height
как 100, 100. Теперь, если я переместу элемент управления (уже добавленный в холст), используя Canvas.SetLeft(myControl, 200)
, он переместится в положение, которое по умолчанию невидимы, и полосы прокрутки также отключены, поэтому нет никакого способа увидеть этот элемент управления.
Теперь, если я добавлю еще один элемент управления в Canvas, полосы прокрутки появятся правильно, и я смогу увидеть предыдущий элемент управления с помощью прокрутки.