Я создаю простое приложение, в котором я создаю элементы пользовательского класса во время выполнения (класс состоит из некоторых элементов управления: текстовые блоки, сетки). Так как моя рабочая область легко перенаселена, я хочу, чтобы главная сетка моего приложения прокручивалась.Прокручиваемое окно WPF с динамически создаваемыми элементами?
Я инкапсулировал свою сетку в средство просмотра прокрутки, и я намерен увеличить ширину и высоту сетки таким образом, чтобы появлялись горизонтальные и вертикальные полосы прокрутки. Моя проблема, однако, в том, что я не знаю, как проверить, действительно ли экземпляр моего пользовательского класса полностью в рабочей области или его части. Я нашел метод в SO, который мог бы решить мою проблему HERE, но поскольку у меня много элементов, мне нужно будет проверить каждый из них. Есть ли другой способ, который будет легко работать?
Кроме того, я должен знать, в какой степени мой элемент выходит за пределы области, так что я только увеличиваю размер сетки соответственно. Я новичок в WPF, поэтому любые предложения очень ценятся!
Вот моя идея схематически: Вот соответствующая часть моего XAML:
<ScrollViewer VerticalScrollBarVisibility="Visible"
HorizontalScrollBarVisibility="Auto"
CanContentScroll="True">
<Grid
x:Name="MainGrid"
Background="Transparent"
MouseLeftButtonUp="grid_MouseLeftButtonUp">
<ItemsControl>
<!--HERE I HAVE A NUMBER OF OTHER ELEMENTS PREDEFINED-->
</ItemsControl>
<Grid.ContextMenu>
<!--HERE I HAVE CONTEXTMENU ELEMENTS-->
</Grid.ContextMenu>
</Grid>
</ScrollViewer>
На самом деле, я использую холст внутри сетки (определенный в шаблоне данных insd ItemsControl), потому что мне нужно абсолютное позиционирование: элементы пользовательского класса отображаются на кнопке buttonClickEvent, где точки мыши, поэтому они находятся на холсте, а я обрабатываю события мыши на внешней сетке. Проблема заключается в следующем: как получить холст внутри сетки, чтобы сделать сетку больше? Извините, я не был конкретным в этом. – rTECH