繁体   English   中英

WPF 在调整窗口大小时使拉伸的 TextBlock 收缩

[英]WPF make a streched TextBlock shrink when window is resized

我有一个显示文件详细信息的列表。 我设计了 ItemTemplate 以在调整窗口大小时拉伸 DirectoryName TextBox。

<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>

这按预期工作。 窗宽

不幸的是,当 DirectoryName 很长或调整窗口大小时,LastWriteTime 从视图中消失。

窗户窄

我非常希望始终显示 LastWriteTime 并且要做到这一点,我希望缩小 TextBlock 以不以不涉及任何侧边栏的方式显示 DirectoryName 的左侧部分。

是否可以?

这应该这样做:

<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>

显然,我所要做的就是禁用作为ListView控件一部分的ScrollViewer ,并将DirectoryName HorizontalAlignment更改为Right以便在调整窗口大小时从左侧消失。

<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>

现在看起来像这样:

正确的窗口小

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM