#wpf #infragistics #stackpanel #dockpanel
#wpf #инфраструктура #stackpanel #dockpanel
Вопрос:
Кажется, я никогда не могу разобраться в различиях между DockPanel, StackPanel и Grid с точки зрения ограничения их дочернего содержимого. Этот XAML:
<DockPanel>
<Menu/>
<ToolBarTray/>
<ScrollViewer>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TabControl>
<TabItem Header="Data" Name="tabData">
<DockPanel>
<Border Name="extraDataBorder" DockPanel.Dock="Top"
Style="{StaticResource ConsistentBorder}" Margin="10">
</Border>
<igDP:XamDataGrid Grid.Row="1"
Margin="10,10,10,0"
ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible" >
</igDP:XamDataGrid>
</DockPanel>
</TabItem>
</TabControl>
</Grid>
</ScrollViewer>
</DockPanel>
Создает сетку, которая не ограничена видимой областью экрана, как показано на рисунке ниже:
Я не хочу, чтобы сетка выходила за пределы видимой области экрана. Вместо этого я хочу, чтобы он был обрезан, чтобы пользователи могли видеть горизонтальную полосу прокрутки и не должны прокручивать вниз, чтобы увидеть горизонтальную полосу прокрутки. Я пытался использовать стек и док-панель вместо сетки, но получаю точно такой же эффект. Как мне это исправить?
TIA.
РЕДАКТИРОВАТЬ: я редактирую исходный XAML, чтобы включить дополнительные элементы, которые вызвали эту проблему.
Комментарии:
1. Какая самая внешняя док-панель внутри? Я спрашиваю, потому что на скриншоте видно, что элемент управления вкладкой находится ниже того места, где вы хотите, чтобы визуальные эффекты остановились. Это, по-видимому, указывает на то, что самая внешняя док-панель или один из ее предков находится внутри чего-то, что позволяет ей быть выше. Обычно проблема заключается в том, что элемент помещается в StackPanel (или в сетку, высота строки которой имеет значение Auto), что в основном означает, что элемент измеряется с бесконечной высотой и, следовательно, имеет размеры, основанные на том, насколько большим должно быть содержимое.
2. Самая внешняя док-панель находится внутри пользовательского элемента управления.
3. Извините, но это все еще не дает ответа, поскольку этот UserControl должен быть размещен внутри чего-то. Без четкой картины иерархии элементов я не могу вам помочь. На вашем изображении у вас есть стрелка, указывающая на какой-то элемент — какова связь дерева элементов между элементом управления tab и этим элементом?
4. Андрей, твой комментарий помог. I XAML, который я изначально опубликовал, был модифицированной версией оригинала. С тех пор я обновил свой первоначальный пост. Однако с тех пор я удалил ScrollViewer и сетку со строками, установленными для автоматической высоты, и это решило мою проблему. Еще раз спасибо.
Ответ №1:
Вы можете привязать его к ширине и высоте родительского элемента в качестве одного из многих решений.