所以我有一个List,其中包含项目。现在他们是图片的缩略图。我希望这个列表绑定到后面的代码中的更改列表,所以我使用了Listbox。但是,我需要这个盒子水平流动。因此它被设计为StackPanel。最后,我希望按钮控制滚动,而不是滚动条。这是不起作用的部分这是一个代码示例:
<UserControl x:Class="TestBench.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
<Style x:Key="StackHorz" TargetType="ListBox">
<Style.Setters>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" Background="AliceBlue" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<ScrollViewer BorderBrush="DarkGreen" BorderThickness="2" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<Button x:Name="_Next" Content="NEXT" Height="20" Width="40" VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
<Button x:Name="_Prev" Content="PREV" Height="20" Width="40" VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
<ListBox x:Name="TestList" Height="100" Width="800" VerticalAlignment="Top">
...Insert ListItems...
</ListBox>
</Grid>
在此示例中,列表框未绑定,但我需要能够设置ItemsSource = {Binding Content}。我试过的代码是:
namespace TestBench
{ public partial class MainPage:UserControl { 公共MainPage() { 的InitializeComponent();
TestList.Style = this.Resources["StackHorzTop"] as Style;
_Next.Click += new RoutedEventHandler(_Next_Click);
_Prev.Click += new RoutedEventHandler(_Prev_Click);
}
void _Prev_Click(object sender, RoutedEventArgs e)
{
TestList.ScrollIntoView(TestList.Items[0]);
}
void _Next_Click(object sender, RoutedEventArgs e)
{
TestList.ScrollIntoView(TestList.Items[TestList.Items.Count - 1]);
}
}
}
但ScrollIntoView什么都不做。我也尝试将ScrollViewer作为列表框的VisualTreeHelper.GetChild(),但使用ScrollToHorizontalOffset()滚动它也没有任何作用。
我知道这是一种奇怪的设置方式,但我需要所有3种功能(绑定,水平方向,无按钮滚动滚动条)。有人知道我在这个问题上哪里出错吗?
提前致谢,
图表。
答案 0 :(得分:0)
也许您可以尝试将列表框放在ScrollViewer中并设置ScrollViewer的样式,以便滚动条不可见(仅按钮)。
可以找到有关ScrollViewer可模板部件的更多信息here。