繁体   English   中英

WPF ScrollViewer控制按钮的可见性

[英]WPF ScrollViewer control buttons visibility

我有一个ListBox,其中隐藏了Horizo​​ntal 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();

}

实现所需功能的正确方法是重新设置ListBoxScrollViwer的水平ScrollBar的样式。 你必须定义一个自定义ControlTemplateScrollViewer中,你可以替换原来的ScrollBar的编辑版ScrollBar用自定义ControlTemplate没有Track Thumb ,但保留了原有RepeatButton秒。

你可以找到的默认ControlTemplateScrollViewerScrollViewer中样式和模板页面,默认ControlTemplateScrollViewer滚动条样式和模板页面上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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM