2010-03-12 61 views
0

我有一个页面(Telerik的:RadPage)含有少量网格和一些嵌套控件,我想知道我怎么能:Silverlight的:制作一个网格单元始终可见,即使在滚动

具有特定的细胞中的一个即使在滚动期间,网格也始终可见。我甚至不确定这是否可能,但我想要看到的一个细胞是我正在展示的第一个细胞。

任何帮助表示赞赏,并欢迎所有建议。

谢谢!

回答

0

我没有使用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> 

编写自定义的控制。

这里我没有提到Adorners,因为它们看起来像方法#1的高级版本。虽然结合最后一种方法,他们可能会导致相当不错的解决方案...

+0

我移动scrollviewer中不想滚动视图的一个元素,但我的应用程序的结构方式不工作预期。 我们有一个常见的telerik:RadFrame,我们在这里显示我们所有的页面,并在这个父/容器的radframe中添加了一个scrollviewer。所以默认情况下,我们所有的页面都滚动。 在这种特殊情况下,我想知道我是否可以禁用scrollviewer并为其中一个页面编写一个。 这可能是可能的,但在这一点上不确定。 感谢您的回复! – VoodooChild 2010-03-14 01:59:06