2012-03-20 4 views
0

Я хочу текстовое поле с номерами строк. Поэтому я решил использовать один маленький TextBox для номеров строк слева, а другой - большой для текста. Моя проблема заключается в том, что я помещаю эти два текстовых поля в док-панель, и мне нужна разница в высоте, потому что TextBox для номеров строк не должен иметь полосы прокрутки. Поэтому мне нужно сократить левый TextBox. Мой план состоит в том, чтобы положить пустой StackPanel под левым TextBox. И у меня возникают проблемы, потому что DockPanel не сортирует мои элементы управления, как я хочу. Единственное, что я получил, это использовать ширину исправления, но я не хочу этого!WPF DockPanel - элементы управления заказами

image

Или я должен идти совершенно иной путь?

ответ

0

Если вы не хотите использовать полосу прокрутки на элементе управления, просто отключите функцию VerticalScrollBarVisibility.

Но я не уверен, что это именно то, что вам нужно. Если вы это сделаете, то, очевидно, номера вашей строки не будут прокручиваться с помощью текстового поля. Лучше всего поставить ваши два текстовых поля (хотя, если номера строк не должны быть доступны для редактирования, вам может понадобиться использовать метки) в док-панели и оберните панель док-станции в scrollviewer.

1

Я не знаю, почему вы должны создать этот элемент управления, но вы можете найти что-то подобное для WPF. См. Эту ссылку AvalonEdit. Это текстовый редактор.

0

Вы можете попробовать использовать ScrollView. Приведенный ниже код демонстрирует эту идею. Но я не придумал решение для горизонтальной прокрутки.

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ScrollViewer Height="100"> 
      <DockPanel> 
       <TextBlock DockPanel.Dock="Left"> 
        <TextBlock.Inlines> 
         1<LineBreak/> 
         2<LineBreak/> 
         3<LineBreak/> 
         4<LineBreak/> 
         5<LineBreak/> 
         6<LineBreak/> 
         7<LineBreak/> 
         8<LineBreak/> 
         9<LineBreak/> 
         10<LineBreak/> 
         11<LineBreak/> 
         12<LineBreak/> 
         13<LineBreak/> 
</TextBlock.Inlines> 
       </TextBlock> 
       <TextBox AcceptsReturn="True" TextWrapping="Wrap"> 
        I want a TextBox with line numbers. So I decided to use one small TextBox for the line numbers on the left and another big one on the rigth for the text. My problem now is that I put these two TextBoxes into a Dockpanel and I need a Heigth difference because the TextBox for the line numbers should not have scrollbars. So I need to short the left TextBox. My plan is to put an empty StackPanel below the left TextBox. And I'm getting trouble because the DockPanel doesen't sort my controls like i want. The only way I got it was using a fix width but I don't want that! 
       </TextBox> 
      </DockPanel> 
     </ScrollViewer> 
    </Grid> 
</Window> 

Похоже Screenshot

+0

ээ ... Он possiblly дублируют от ответа Мэтта Берланд в .... я не читал все ответы. – Gqqnbig