0

行番号付きのTextBoxが必要です。そこで、左側の行番号に1つの小さなTextBoxを使用し、右側のテキストにもう1つの大きなTextBoxを使用することにしました。私の問題は、これら2つのTextBoxをDockpanelに配置し、行番号のTextBoxにスクロールバーを含めるべきではないため、高さの差が必要になることです。したがって、左側のTextBoxを短くする必要があります。私の計画は、左側のTextBoxの下に空のStackPanelを配置することです。また、DockPanelがコントロールを希望どおりに並べ替えないため、問題が発生しています。私がそれを得る唯一の方法は、固定幅を使用することでしたが、私はそれを望んでいません!

画像

それとも私は完全に別の方法で行くべきですか?

4

3 に答える 3

1

なぜこのコントロールを作成する必要があるのか​​はわかりませんが、WPF に似たものを見つけることができます。このリンクAvalonEditを参照してください。これは、テキスト エディター コントロールです。

于 2012-03-20T12:59:51.980 に答える
0

コントロールにスクロール バーが必要ない場合は、VerticalScrollBarVisibility を無効に設定します。

しかし、それがまさにあなたが必要としているものかどうかはわかりません。これを行うと、明らかに行番号がテキスト ボックスでスクロールされません。2 つのテキスト ボックス (行番号を編集できない場合は、代わりにラベルを使用することもできます) をドックパネルに配置し、ドック パネルをスクロールビューアーでラップすることをお勧めします。

于 2012-03-20T12:42:05.180 に答える
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>

のように見えます スクリーンショット

于 2012-03-20T13:27:52.927 に答える