2009-11-19 18 views

cevap

6

, burada bir aptal örnektir: - ScrollViewer gibi

<Grid x:Name="LayoutRoot" Background="White"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="100" /> 
     <ColumnDefinition Width="100" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="60" /> 
    </Grid.RowDefinitions> 
    <ScrollViewer x:Name="ScrollSource"> 
     <StackPanel> 
      <TextBlock>Hello</TextBlock> 
      <TextBlock>World</TextBlock> 
      <TextBlock>Yasso</TextBlock> 
      <TextBlock>Kosmos</TextBlock> 
     </StackPanel> 
    </ScrollViewer> 
    <TextBox Grid.Column="1" Text="{Binding VerticalOffset, ElementName=ScrollSource}" /> 

</Grid> 

yeni değerin tavsiye edilir TextBox metin özelliği kayarak geçerler.

+0

Bahşiş için teşekkürler! ScrollChanged olayına abone olan WPF yerine, şimdi özel bir bağımlılık özelliğini scrollviewer's VerticalOffset'e bağlarım ve bağımlılık özelliği için koddaki değiştirilmiş değerler ile bir şeyler yapabilmeleri için bir geri arama kullanıyorum. En azından çalışır: p – eriksmith200

+1

http://www.wintellect.com/CS/blogs/jlikness/archive/2010/05/18/making-the-scrollviewer-talk-in-silverlight-4.aspx –

3

Silverlight forumlarında özellikli daha kolay bir çözüm var: Burada

protected override Size ArrangeOverride(Size finalSize) 
{  
    // Assumes you only have one scrollviewer (e.g. fullscreen ScrollViewer) 
    var scrollbar = LayoutRoot.GetVisualDescendants() 
     .OfType<ScrollBar>() 
     .FirstOrDefault(); 

    if (scrollbar != null) 
     scrollbar.Scroll += ScrollBarScroll; 

    return base.ArrangeOverride(finalSize); 
} 

private void ScrollBarScroll(object sender, ScrollEventArgs e) 
{ 

}