WPF DockPanel - управление заказами - PullRequest
0 голосов
/ 20 марта 2012

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

image

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

Ответы [ 3 ]

1 голос
/ 20 марта 2012

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

0 голосов
/ 20 марта 2012

Вы можете попробовать использовать 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 голосов
/ 20 марта 2012

Если вам не нужна полоса прокрутки в элементе управления, просто отключите VerticalScrollBarVisibility.

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

...