簡體   English   中英

WPF DockPanel-訂單控件

[英]WPF DockPanel - order controls

我想要一個帶有行號的TextBox。 因此,我決定對左側的行號使用一個小的TextBox,對於文本的右側使用另一個大的文本框。 我現在的問題是,我將這兩個TextBox放入了Dockpanel中,並且我需要一個高度差,因為行號的TextBox應該沒有滾動條。 所以我需要縮短左側的TextBox。 我的計划是在左側的TextBox下面放置一個空的StackPanel。 而且我遇到了麻煩,因為DockPanel無法按我的意願對控件進行排序。 我得到它的唯一方法是使用固定寬度,但我不希望這樣!

圖片

還是應該采用完全不同的方式?

我不知道為什么要構建此控件,但是您可以為WPF找到類似的東西。 看到此鏈接AvalonEdit 這是一個文本編輯器控件。

如果您不想在控件上使用滾動條,只需將VerticalScrollBarVisibility設置為Disabled。

但是我不確定這正是您所需要的。 如果這樣做,顯然行號不會隨文本框一起滾動。 最好的選擇是將兩個文本框(盡管如果行號不應該是可編輯的,則可能要使用標簽)放在停靠面板中,然后將停靠面板包裝在scrollviewer中。

您可以嘗試使用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>

看起來像 屏幕截圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM