[英]WPF ScrollViewer control buttons visibility
我有一个ListBox,其中隐藏了Horizontal ScrollBar。
我添加了自定义按钮,以控制此滚动(向左移动/向右移动)。
我想隐藏(将可见性设置为折叠),或者如果scrollViewer包含的项目不足以工作(当所有子项都适合屏幕时)
在WPF中可以吗?
编辑:
基本上,我的观点有点复杂,但是我有这样的事情:
<ListBox x:Name="ListBox" Margin="0,0,10,0" Grid.Column="0" BorderThickness="0" ScrollViewer.HorizontalScrollBarVisibility="Hidden" Background="Transparent" ItemsSource="{Binding OpenedPatients}"
SelectedItem="{Binding SelectedPatient}">
...
...
</ListBox>
我有代码隐藏的控件:
private void ButtonBase1_OnClick(object sender, RoutedEventArgs e)
{
_scrollViewer = FindVisualChild<ScrollViewer>(ListBox);
_scrollViewer.LineLeft();
_scrollViewer.LineLeft();
_scrollViewer.LineLeft();
_scrollViewer.LineLeft();
_scrollViewer.LineLeft();
}
private void ButtonBase2_OnClick(object sender, RoutedEventArgs e)
{
_scrollViewer = FindVisualChild<ScrollViewer>(ListBox);
_scrollViewer.LineRight();
_scrollViewer.LineRight();
_scrollViewer.LineRight();
_scrollViewer.LineRight();
_scrollViewer.LineRight();
}
实现所需功能的正确方法是重新设置ListBox
的ScrollViwer
的水平ScrollBar
的样式。 你必须定义一个自定义ControlTemplate
为ScrollViewer
中,你可以替换原来的ScrollBar
的编辑版ScrollBar
用自定义ControlTemplate
没有Track Thumb
,但保留了原有RepeatButton
秒。
你可以找到的默认ControlTemplate
的ScrollViewer
的ScrollViewer中样式和模板页面,默认ControlTemplate
的ScrollViewer
的滚动条样式和模板页面上MSDN。 如果需要,可以从MSDN上的ControlTemplate
类页面中找到有关ControlTemplate
的信息。
例如,从第一个链接页面改编而成,您需要如上所述为水平ScrollBar
创建一个自定义ControlTemplate
,并将其应用到ScrollViewer
的自定义ControlTemplate
中,如下所示:
<Style x:Key="LeftScrollViewer"
TargetType="{x:Type ScrollViewer}">
<Setter Property="OverridesDefaultStyle"
Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ScrollViewer}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Grid.Column="1"
BorderThickness="0,1,1,1">
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource BorderMediumColor}" />
</Border.BorderBrush>
<ScrollContentPresenter />
</Border>
<ScrollBar x:Name="PART_VerticalScrollBar"
Value="{TemplateBinding VerticalOffset}"
Maximum="{TemplateBinding ScrollableHeight}"
ViewportSize="{TemplateBinding ViewportHeight}"
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>
<ScrollBar x:Name="PART_HorizontalScrollBar"
Orientation="Horizontal"
Grid.Row="1"
Grid.Column="1"
Value="{TemplateBinding HorizontalOffset}"
Maximum="{TemplateBinding ScrollableWidth}"
ViewportSize="{TemplateBinding ViewportWidth}"
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
Template="{StaticResource YourCustomScrollBarTemplate}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.