Silverlight: сделать ячейку сетки всегда видимой даже при прокрутке - PullRequest
0 голосов
/ 12 марта 2010

У меня есть страница (telerik: RadPage), содержащая несколько сеток и несколько вложенных элементов управления, и мне было интересно, как я могу:

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

Любая помощь приветствуется, и все предложения приветствуются.

Спасибо!

1 Ответ

0 голосов
/ 13 марта 2010

У меня нет опыта работы с элементами управления Rad, но если вы хотите иметь что-то, что нельзя прокручивать - уберите его из ScrollViewer. Это общий принцип.

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

1. Дублируйте первый элемент и покажите его выше ScrollViewer:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>  
    <ListBox>
      <TextBlock Text="First element"/>
      <TextBlock Text="Second element"/>
      <TextBlock Text="Third element"/>
      <TextBlock Text="Forth element"/>
      <TextBlock Text="Fifth element"/>
    </ListBox>    
    <!-- Overlay -->
    <Border Background="White" VerticalAlignment="Top">
      <TextBlock Text="Overlay text. Should be a duplicate of the First Element"
                 Margin="3, 0"/>
    </Border>
  </Grid>
</Page>

Этот метод имеет множество недостатков. Начиная от самого дублирования и заканчивая управлением фокусом / клавиатурой.

2. Все, кроме первых элементов, попадают в список. Первый элемент - это отдельный элемент управления:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>  
    <Grid.RowDefinitions>
     <RowDefinition Height="Auto"/>
     <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!-- First Element -->
    <TextBlock Text="First element"
               Grid.Row="0"
               Margin="4, 0"/>

    <!-- List Element -->
    <ListBox Grid.Row="1" BorderThickness="0">
      <TextBlock Text="Second element"/>
      <TextBlock Text="Third element"/>
      <TextBlock Text="Forth element"/>
      <TextBlock Text="Fifth element"/>
    </ListBox>    
  </Grid>
</Page>

3. Запись пользовательского элемента управления.

Я не упоминаю Adorners здесь, потому что они кажутся продвинутой версией подхода # 1. Хотя в сочетании с последним подходом они могут привести к довольно хорошему решению ...

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