wpf 水平にスクロールさせたい

Wpfにsliderをつけてリストをスクロールさせたい時の話。

垂直方向・水平方向に動かしたい時のポイントはここ!!

こちらが垂直方向に動かしたい時
scrollProvider.SetScrollPercent(
// 水平スクロールは今の位置
scrollProvider.HorizontalScrollPercent,
// スクロール位置を割合で指定する
scrollpoint);

こちらが水平方向に動かしたい時
scrollProvider.SetScrollPercent(
// スクロール位置を割合で指定する
scrollpoint,
// 垂直スクロールは今の位置
scrollProvider.VerticalScrollPercent);

以下、コード

private void slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
{
listbox.SelectedIndex = (int)slider.Value;

double scrollpoint = slider.Value / listbox.Items.Count * 100;

try
{
// ListBoxからAutomationPeerを取得
var peer = ItemsControlAutomationPeer.CreatePeerForElement(this.listbox);
// GetPatternでIScrollProviderを取得
var scrollProvider = peer.GetPattern(PatternInterface.Scroll) as IScrollProvider;
// パーセントで位置を指定してスクロール
scrollProvider.SetScrollPercent(
// スクロール位置を割合で指定する
scrollpoint,
// 垂直スクロールは今の位置
scrollProvider.VerticalScrollPercent);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}