В приложении wpf путь к файлу не отображается с правого конца в текстовом поле

У меня есть текстовое поле в окне WPF, чтобы показать путь к файлу и кнопку просмотра рядом с текстовым полем, я выбираю файл из браузера (tfs) и хочу показать полный путь, выровненный с правой стороны, но он отображается только с левой стороны . Изображение показывает путь, показанный слева

Я пробовал HorizontalAlignment, VerticalAlignment, HorizontalContentAlignment, но ничего не помогает.

Я хочу отобразить его с правой стороны.

Я сослался

Показать правый конец текстовой строки в TextBox

Выравнивание TextBox.TextAlign по правому краю не работает в определенных условиях?

Кто-нибудь может помочь?

Вот код

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>

        <Label x:Name="label" Content="Source :&#xD;&#xA;" HorizontalAlignment="Left" VerticalAlignment="Top" RenderTransformOrigin="1.144,1.871" Margin="10,27,0,0"/>
        <TextBox x:Name="txtSourceFile" HorizontalAlignment="Left" Height="23" Margin="67,34,0,0" TextWrapping="NoWrap"  VerticalAlignment="Top" Width="400" TextAlignment="Justify" HorizontalContentAlignment="Right" />
        <Button x:Name="btnBrowseSource" Content="Browse" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="379,62,0,0" Click="btnBrowseSource_Click" />



    </Grid>
</Window>

3
0
131
2

Ответы 2

Хорошо, поэтому это не так тривиально, как установить свойство в текстовом поле, что вы можете сделать, это объявить этот метод:

private void ScrollToEnd()
{
    var sv = (ScrollViewer)txtSourceFile.Template.FindName("PART_ContentHost", txtSourceFile);
        sv.ScrollToHorizontalOffset(sv.ExtentWidth);
}

И вызывайте его всякий раз, когда изменяется значение вашего текстового поля.

Сэр, я сделал это, я пробовал это перед публикацией, но это не работает, и это причина, по которой я удивлен. Кажется, ничего не работает. Я прочитал все свойства текстового поля из MSDN. это потому, что путь - это путь TFS, а не обычный путь к каталогу Windows?

GKhedekar 01.11.2018 08:38

@GKhedekar попробуйте новый ответ.

Rafal 02.11.2018 10:10

У меня была такая же проблема, и я добавил метод для событий Загружено и TextChanged

<TextBox Loaded="FolderTB_ScrolltoEnd" TextChanged="FolderTB_ScrolltoEnd" ... />

и для установки смещения

private void FolderTB_ScrolltoEnd(object sender, EventArgs e)
    {
        ((TextBox)sender).ScrollToHorizontalOffset(((TextBox)sender).ExtentWidth);
    }

Другие вопросы по теме