Справка по макету wpf - PullRequest
1 голос
/ 30 июня 2011

У меня есть следующий xaml, который находится в пользовательском элементе управления wpf -

<Grid>    
        <Grid.RowDefinitions>
            <RowDefinition Height="30" />
            <RowDefinition Height="*" />
            <RowDefinition Height="30" />
        </Grid.RowDefinitions>

        <TextBox 
            x:Name="MyTxt"
            TextWrapping="WrapWithOverflow" 
            Grid.Row="0"  
            />

        <ListView                 
            x:Name="MyList"
            ItemsSource="{Binding}"
            Grid.Row="1"
            />

        <Label
            Grid.Row="2"
            />
    </Grid>

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

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

Мне удалось установить представление списка на фиксированную высоту, и это сработало, но я бы хотел, чтобы оно было более динамичным и по возможности изменяло размер окна.

У кого-нибудь есть какие-нибудь советы, которые могли бы сделать правильный размер?

Спасибо за любые мысли.

РЕДАКТИРОВАТЬ - Вот xaml для сетки в представлении главного окна. это было адаптировано из статьи Джоша Смита здесь

<Grid>
      <Border 
           Style="{StaticResource MainBorderStyle}"
           >
           <HeaderedContentControl
             Content="{Binding Path=Workspaces}"
             ContentTemplate="{StaticResource WorkspacesTemplate}"                  
             />
         </Border>
 </Grid>

У меня действительно установлены свойства scrollviewer, как указано в некоторых ответах ниже. Вот таблица данных для рабочей области

<DataTemplate x:Key="WorkspacesTemplate">
        <TabControl 
      IsSynchronizedWithCurrentItem="True" 
      ItemsSource="{Binding}" 
      ItemTemplate="{StaticResource ClosableTabItemTemplate}"
      Margin="4"
      />
    </DataTemplate>

Ответы [ 3 ]

0 голосов
/ 30 июня 2011

Что такое вертикальное выравнивание ListBox по умолчанию?Возможно, вам придется установить вертикальное выравнивание на Растянуть.

<ListView                 
        x:Name="MyList"
        ItemsSource="{Binding}"
        Grid.Row="1"
        VerticalAlignment="Stretch"
        />    
0 голосов
/ 30 июня 2011

Я смог заставить его работать.Если я заменю содержащую сетку в главном окне на ContentControl вместо HeaderedcontentControl, она будет работать, как и ожидалось.

Спасибо за любую помощь.

0 голосов
/ 30 июня 2011

Можете ли вы просто добавить эти свойства в просмотр списка?

ScrollViewer.CanContentScroll = "True" 
ScrollViewer.VerticalScrollBarVisibility="Visible" <!-- or "Auto"   -->

Все остальное выглядит хорошо для меня. У вас есть 3 ряда, 2 из которых являются абсолютными, другой растягивается. У вас также есть представление списка во 2-й строке, поэтому оно должно растягиваться вместе с ним.

если это не сработает, попробуйте обернуть ListView в просмотрщик прокрутки

<ScrollViewer>
    <ListView/>
</ScrollViewer>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...