ScrollViewerの垂直スクロールバーのVerticalOffsetへの変更を通知したい。WPFにはScrollViewer.ScrollChangedイベントがありますが、Silverlight3ではこれがありません。誰かが回避策を知っていますか?
3548 次
3 に答える
6
要素バインディングを使用できます。これは簡単な例です:-
<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>
がスクロールされるScrollViewer
と、TextBoxのTextプロパティに新しい値が通知されます。
于 2009-11-19T11:11:25.017 に答える
3
Silverlightフォーラムで取り上げられたより簡単なソリューションがあります。
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)
{
}
于 2010-05-25T09:34:33.297 に答える
1
これは私がグーグルで見つけた良いリンクです、それは私がチェックアウトしていないいくつかのサンプルコードも持っています。
http://dotplusnet.blogspot.com/2010/05/scrollviewer-scroll-change-event-in.html
于 2010-09-14T18:02:14.640 に答える