WPF уменьшит растянутый текстовый блок при изменении размера окна - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть список, который показывает детали файлов. Я разработал ItemTemplate для растягивания TextNox DirectoryName при изменении размера окна.

<ListView ItemsSource="{Binding LogFolderContent}" SelectedItem="{Binding SelectedLogFile}" HorizontalContentAlignment="Stretch">
    <ListView.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <TextBlock Text="{Binding LastWriteTime" DockPanel.Dock="Right"/>
                <TextBlock Text="{Binding Name}" DockPanel.Dock="Left"/>
                <TextBlock Text="{Binding DirectoryName}" DockPanel.Dock="Left" Margin="10,0,10,0"/>
            </DockPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

Это работает, как и ожидалось. window wide

К сожалению, когда DirectoryName очень длинное или размер окна изменяется, LastWriteTime исчезает из вида.

window narrow

Я бы очень хотел всегда показывать LastWriteTime и для этого хотел бы уменьшить TextBlock, чтобы не отображать левую часть DirectoryName так, чтобы не было никаких боковых панелей.

Возможно ли это

Ответы [ 2 ]

0 голосов
/ 10 февраля 2020

Видимо, все, что мне нужно было сделать, это отключить ScrollViewer, являющийся частью элемента управления ListView, и изменить HorizontalAlignment на Right, чтобы DirectoryName исчезало с левой стороны при изменении размера окна.

<ListView ItemsSource="{Binding LogFolderContent}" SelectedItem="{Binding SelectedLogFile}" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
    <ListView.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <TextBlock Text="{Binding LastWriteTime}" DockPanel.Dock="Right"/>
                <TextBlock Text="{Binding Name}" DockPanel.Dock="Left"/>
                <TextBlock Text="{Binding DirectoryName}" HorizontalAlignment="Right" DockPanel.Dock="Left" Margin="10,0,10,0"/>
            </DockPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

и теперь это выглядит так:

correct window small

0 голосов
/ 10 февраля 2020

Это должно сделать это:

<ListView ItemsSource="{Binding LogFolderContent}" SelectedItem="{Binding SelectedLogFile}" HorizontalContentAlignment="Stretch">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding Name}" />
                <TextBlock Grid.Column="1" Text="{Binding DirectoryName}"/>
                <TextBlock Grid.Column="2" Text="{Binding LastWriteTime}" />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
...