我需要在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方法都很好。
如果它有任何区别,这是我正在开发的用户控件的一部分。
答案 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>