将属性附加到Textbox的Scrollviewer

时间:2014-02-03 05:00:35

标签: c# wpf textbox scrollviewer

我需要在WPF中同步两个滚动查看器,其中一个是TextBox项的一部分。

我打算使用CodeProject here上描述的方法:

但是,这要求我可以将属性附加到两个滚动查看器。其中一个滚动查看器是滚动查看器,它是文本框的一部分。

目前的代码:

<ScrollViewer Core:ScrollSynchronizer.VerticalScrollGroup="V1">
    <UIComponents:LineNumberBox
            x:Name="LineBox"
            VisibleLines="{Binding ElementName=CodeBox, Path=(UIComponents:VisibleLinesBinder.VisibleLines)}"
            Padding="2,10,2,0"
            FontSize="14"
            Grid.Column="0"
            />
</ScrollViewer>

<UIComponents:SourceCodeBox 
        x:Name="CodeBox" 
        Padding="10" 
        FontSize="14" 
        Grid.Column="1"
        UIComponents:VisibleLinesBinder.ObserveVisibleLines="True"
        Core:ScrollSynchronizer.VerticalScrollGroup="V1"
    />

UIComponents:SourceCodeBox只是普通WPF文本框的包装。

显然,SourceCodeBox上的Core:ScrollSynchronizer.VerticalScrollGroup="V1"不起作用?那么我如何将该属性附加到其中的ScrollViewer? C#或XAML方法都很好。

如果它有任何区别,这是我正在开发的用户控件的一部分。

1 个答案:

答案 0 :(得分:0)

将附加的行为放在这样的样式中:

        <UIComponents:SourceCodeBox 
                x:Name="CodeBox" 
                Padding="10" 
                FontSize="14" 
                Grid.Column="1"
                UIComponents:VisibleLinesBinder.ObserveVisibleLines="True"
                Core:ScrollSynchronizer.VerticalScrollGroup="V1">
        <UIComponents:SourceCodeBox.Resources>
            <Style TargetType="ScrollViewer">
                <Setter Property="Core:ScrollSynchronizer.VerticalScrollGroup" Value="V1"/>
            </Style>
        </UIComponents:SourceCodeBox.Resources>
    </UIComponents:SourceCodeBox>