xaml代码:
<ItemsPanelTemplate x:Key="ItemsPanelTemplate1">
<VirtualizingStackPanel Orientation="Horizontal" IsItemsHost="True"/>
</ItemsPanelTemplate>
<ListBox x:Name="listbox"
ItemsPanel="{DynamicResource ItemsPanelTemplate1}"
ScrollViewer.CanContentScroll="False"
ScrollViewer.PanningMode="HorizontalOnly"
ItemContainerStyle="{DynamicResource ListBoxItemStyleGroup1}"
HorizontalContentAlignment="Center"
ScrollViewer.HorizontalScrollBarVisibility="Hidden">
</ListBox>
cs代码:
public Demo()
{
InitializeComponent();
listbox.AddHandler(ListBox.MouseWheelEvent, new MouseWheelEventHandler(ListBox_MouseWheel), true);
}
private void ListBox_MouseWheel(object sender, MouseWheelEventArgs e)
{
ItemsControl items = (ItemsControl)sender;
ScrollViewer scroll = FindVisualChild<ScrollViewer>(items);
if (scroll != null)
{
int d = e.Delta;
int currentNum = 0;
var horOffset = (int)Math.Round(scroll.HorizontalOffset);
if (d > 0)
{
scroll.LineLeft();
currentNum = horOffset / (int)ListSignal.ActualWidth + 1;
}
if (d < 0)
{
scroll.LineRight();
currentNum = horOffset / (int)ListSignal.ActualWidth + 1;
}
scroll.ScrollToTop();
}
}
这样ListBox就可以横向滚动了