2

我有Expander一个嵌套ScrollViewer如下所示:

代码(简化版

<Expander.Content>
    <ScrollViewer VerticalScrollBarVisibility="Auto" >
        <StackPanel Orientation="Vertical">
            <TextBox FontSize="16"
                    BorderThickness="0"
                    IsReadOnly="True"
                    Background="Transparent"
                    Foreground="MidnightBlue"
                    TextWrapping="Wrap"
                    Text="{Binding LoggingMessage, Mode=OneWay}">
                </TextBox>
            /StackPanel>
         </ScrollViewer>
    </Expander.Content>
</Expander>

我需要更改 ScrollViewer 的一侧,使其显示在左侧。

什么是最简单的解决方案?

4

3 回答 3

4

您可以自定义滚动查看器的模板以更改滚动条的位置(除其他外)。模板自定义的 MSDN 示例实际上是展示如何将垂直滚动条向左移动。

http://msdn.microsoft.com/en-gb/library/aa970847(v=vs.85).aspx

为了方便起见,这里是代码:

<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>

                    <ScrollContentPresenter Grid.Column="1"/>

                    <ScrollBar Name="PART_VerticalScrollBar"
                        Value="{TemplateBinding VerticalOffset}"
                        Maximum="{TemplateBinding ScrollableHeight}"
                        ViewportSize="{TemplateBinding ViewportHeight}"
                        Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>
                    <ScrollBar Name="PART_HorizontalScrollBar"
                        Orientation="Horizontal"
                        Grid.Row="1"
                        Grid.Column="1"
                        Value="{TemplateBinding HorizontalOffset}"
                        Maximum="{TemplateBinding ScrollableWidth}"
                        ViewportSize="{TemplateBinding ViewportWidth}"
                        Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"/>

                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
于 2013-03-15T10:51:44.877 回答
1

滚动条位置由 FlowDirection 属性定义。

有关更多详细信息,请参阅https://stackoverflow.com/a/22717596/2075605

于 2014-03-28T15:57:38.770 回答
0

上面的代码是从右向左改变。但是,您需要从左到右。使用与上面相同的代码,但将滚动内容演示者更改为:

<ScrollContentPresenter x:Name="PART_ScrollContentPresenter" Grid.Column="0" Grid.Row="0"/>

$

我测试了它,它对我有用

于 2015-05-26T19:58:44.597 回答