0

Silverlightでは、内部の特定の要素をScrollViewer表示したままにすることはできますか?これは、スクロール位置が現在どこにあるかに関係なく、特定の要素が常に表示される必要があることを意味します。

このXAMLを例にとってみましょう(XamlPadのKaXamlのようなものに入れることができます):

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Grid>  
    <ScrollViewer Width="250" Height="100" HorizontalScrollBarVisibility="Visible">
      <StackPanel>
        <Grid Width="350" Height="50">
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
          </Grid.ColumnDefinitions>
          <Button Content="1" Grid.Column="0" BorderThickness="2" Width="50" />
          <Button Content="2" Grid.Column="1" BorderThickness="2" Width="50" />
          <Button Content="3" Grid.Column="2" BorderThickness="2" Width="50" />
          <Button Content="4" Grid.Column="3" BorderThickness="2" Width="50" />
          <Button Content="5" Grid.Column="4" BorderThickness="2" Width="50" />
          <Button Content="6" Grid.Column="5" BorderThickness="2" Width="50" />
          <Button Content="X" Grid.Column="6" BorderThickness="2" Width="50" />
        </Grid>
        <Grid Width="350" Height="50">
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="50" />
          </Grid.ColumnDefinitions>
          <Button Content="1" Grid.Column="0" BorderThickness="2" Width="50" />
          <Button Content="2" Grid.Column="1" BorderThickness="2" Width="50" />
          <Button Content="3" Grid.Column="2" BorderThickness="2" Width="50" />
          <Button Content="4" Grid.Column="3" BorderThickness="2" Width="50" />
          <Button Content="5" Grid.Column="4" BorderThickness="2" Width="50" />
          <Button Content="6" Grid.Column="5" BorderThickness="2" Width="50" />
          <Button Content="X" Grid.Column="6" BorderThickness="2" Width="50" />
        </Grid>
      </StackPanel>
    </ScrollViewer>
  </Grid>
</Page>

左右にどれだけスクロールしても、「X」ボタンは見えたままにしておきたいです。もちろん、下または上にスクロールするときは、「X」ボタンがスクロールの後に続く必要があります。

XAMLの構造が理想的であるとは言いませんが、各行は異なるアイテムにデータバインドされているため、各行はデータテンプレートです。スクロールビューアに1つの大きなグリッドを配置したり、行の代わりに列をテンプレートとして使用したりすることはできません(少なくとも、できないと思います)。

4

2 に答える 2

1

汗だくではありません。これらの要素を Scrollviewer の Panel に重ねるだけです。

<Grid>

  <ScrollViewer>
     ... Scroll Viewer Embedded Stuff ...
  </ScrollViewer>
  <StackPanel Orientation="Horizontal" 
              HorizontalAlignment="Center" VerticalAlignment="Top" Margin="5">
     <Button Content="Button1"/>
     <Button Content="Button1"/>
     <Button Content="Button1"/>
     <Button Content="Button1"/>
     <Button Content="Button1"/>
  </StackPanel>

</Grid>

必要に応じて、さらに一歩進んで EventTrigger を設定して、MouseEnter でボタンを表示し、MouseLeave でボタンを非表示にすることもできますが、これで開始できます。頑張ってください!

于 2012-06-25T03:26:06.420 に答える
0

DataGrid を使用すると、X ボタンが固定された列として表示される可能性があります。

于 2012-06-25T03:32:45.423 に答える