Ограничение размера дочернего элемента управления на панели видимой областью

#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:

Вы можете привязать его к ширине и высоте родительского элемента в качестве одного из многих решений.