2014-02-03 3 views
1

Мне нужно синхронизировать два зрителя прокрутки в WPF, один из которых является частью элемента TextBox.Прикрепить атрибут Scrollviewer текстового поля

Я намереваюсь на использовании метода, описанного на CodeProject here:

Однако, это требует, чтобы я могу прикрепить атрибуты обоих scrollviewers. Одним из scrollviewers является scrollviewer, который входит в состав текстового поля.

код на данный момент:

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

Очевидно, что Core:ScrollSynchronizer.VerticalScrollGroup="V1" на SourceCodeBox не работает? Итак, как я могу прикрепить этот атрибут к ScrollViewer внутри него? Методы C# или XAML оба хороши.

В случае, если это имеет значение, это часть пользовательского элемента управления, который я разрабатываю.

ответ

0

поставил attatched поведение в стиле, как это:

 <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> 
Смежные вопросы