Patrick Skelton Ответов: 1

Как я могу выровнять текст заголовка по левому краю только в одном столбце listview?


У меня есть ListView с тремя колоннами. Первые два имеют ширину, которая не сильно меняется (всегда содержит одинаковое количество символов). Я могу исправить ширину этих колонн, если это необходимо.

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

Проблема усугубляется тем, что это ListView является ли центр (из трех) панелей выполнен с использованием Grid, и я хотел бы, чтобы эта центральная панель была той, которая растет и сжимается по мере изменения размера окна.

Как я могу это сделать?

Что я уже пробовал:

Я пробовал следовать различным примерам, но ни один из них, похоже, не работает.

Это мой текущий код, который не работает, но я не понимаю почему:

<ListView Grid.Row="0" Grid.Column="1" SelectionMode="Single" ItemsSource="{Binding EnquiryJobsFiltered}">
	<ListView.View>
		<GridView>
			<GridViewColumn Header="Enquiry/Job" Width="90" DisplayMemberBinding="{Binding EnquiryJobNumberAsString}"/>
			<GridViewColumn Header="Progress" Width="90" DisplayMemberBinding="{Binding Progress}"/>
			<GridViewColumn>
				<GridViewColumn.HeaderTemplate>
					<DataTemplate>
						<TextBlock Text="Description" TextAlignment="Left"/>
					</DataTemplate>
				</GridViewColumn.HeaderTemplate>
				<GridViewColumn.CellTemplate>
					<DataTemplate>
						<TextBlock Text="{Binding Description}" TextAlignment="Left"/>
					</DataTemplate>
				</GridViewColumn.CellTemplate>
			</GridViewColumn>
		</GridView>
	</ListView.View>
</ListView>

1 Ответов

Рейтинг:
8

Richard Deeming

Это должно быть так же просто, как добавить HeaderContainerStyle и установка HorizontalContentAlignment к Left:

<GridViewColumn Header="Description" DisplayMemberBinding="{Binding Description}">
    <GridViewColumn.HeaderContainerStyle>
        <Style TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="HorizontalContentAlignment" Value="Left" />
        </Style>
    </GridViewColumn.HeaderContainerStyle>
</GridViewColumn>

How-to: ListView с именами столбцов, выровненными по левому краю[^]


Patrick Skelton

Спасибо, Ричард! Твоя фраза "Это должно быть так же просто, как..." вызвала у меня улыбку. Даже спустя год некоторые аспекты XAML все еще кажутся мне черным искусством, и, судя по количеству погонь за дикими гусями, за которыми я слежу в интернете в поисках решений, похоже, я не одинок. Мне все еще кажется, что я часто использую подход случайной настройки свойств, просто чтобы посмотреть, смогу ли я заставить что-нибудь двигаться на экране. В любом случае, еще раз спасибо.