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

The scrollbar position is defined by the FlowDirection property.

See https://stackoverflow.com/a/22717596/2075605 for more details

于 2014-03-28T15:57:38.770 に答える
0

上記のコードは、右から左に変更することです。ただし、左から右に必要です。上記と同じコードを使用しますが、scrollcontent プレゼンターを次のように変更します。

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

$

私はそれをテストし、それは私のために働いた

于 2015-05-26T19:58:44.597 に答える