【问题标题】:WPF make a streched TextBlock shrink when window is resized调整窗口大小时,WPF 使拉伸的 TextBlock 收缩
【发布时间】:2020-02-09 19:07:26
【问题描述】:

我有一个显示文件详细信息的列表。 我设计了 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 的左侧部分。

有可能吗?

【问题讨论】:

标签: c# wpf listview textbox


【解决方案1】:

应该这样做:

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

【讨论】:

  • 不幸的是,Width="*" 在向上缩放时效果很好,但它永远不会低于其内容的宽度,从而产生与我在问题中描述的完全相同的效果。
  • 我明白了。好吧,很高兴你在下面找到了一种方法:)
【解决方案2】:

显然,我所要做的就是禁用ScrollViewer,它是ListView 控件的一部分,并将@​​987654325@ 更改为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>

现在看起来像这样:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多