WPF 在调整 window 大小时使拉伸的 TextBlock 收缩
WPF make a streched TextBlock shrink when window is resized
我有一个显示文件详细信息的列表。
我将 ItemTemplate 设计为在 window 调整大小时拉伸 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 很长,或者 window 调整大小时,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
] 在 window 调整大小时从左侧消失。
<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>
现在看起来像这样:
我有一个显示文件详细信息的列表。 我将 ItemTemplate 设计为在 window 调整大小时拉伸 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 很长,或者 window 调整大小时,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
] 在 window 调整大小时从左侧消失。
<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>
现在看起来像这样: