내 질문에 this post와 동일합니다. 그러나이 오래된 게시물은 4 년 동안 답변이 없기 때문에 어쩌면 이것이 정상적으로 작동하지 않는 이유에 대한 새로운 통찰력이 있을지도 모른다고 생각했습니다.왜 내 스타일이 적용되지 않습니까?
내 창 리소스에서 나는 TextBlock
에 대한 간단한 스타일을 정의합니다. 스타일에는 x:Key
속성이 없으므로 내 창에서 자신의 스타일이없는 모든 TextBlock
컨트롤에 적용해야합니다.
그런 다음 GridView
을보기로 정의하여 ListView
을 만듭니다. ListView
에는 4 개의 열이 정의되어 있고 두 개의 열은 TextBlock
을 포함하는 명시적인 CellTemplate
으로 정의되며 두 개의 열은 명시 적 CellTemplate
없이 정의됩니다.
가 여기 내 전체 XAML 코드입니다 (문제는 코드에서 다음과) :
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" SizeToContent="WidthAndHeight">
<Window.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="TextTrimming" Value="CharacterEllipsis" />
<Setter Property="Background" Value="Aqua" />
</Style>
<Style x:Key="ListViewItemStyle" TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</Window.Resources>
<ListView ItemContainerStyle="{StaticResource ListViewItemStyle}">
<ListView.View>
<GridView>
<GridViewColumn Header="Bottom" Width="50" DisplayMemberBinding="{Binding Bottom}" />
<GridViewColumn Header="Left" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Left}" TextAlignment="Center" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Right" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Right}" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Top" Width="50" DisplayMemberBinding="{Binding Top}" />
</GridView>
</ListView.View>
<ListView.Items>
<Thickness>1,2,3,4</Thickness>
<Thickness>5,6,7,8</Thickness>
<Thickness>9,10</Thickness>
</ListView.Items>
</ListView>
</Window>
이 코드를 실행하면, 내가 볼 수있는, 내 TextBlock
스타일은, 그 모든 TextBlock
에 적용하도록되어 있음 컨트롤은 명시적인 CellTemplate
이없는 열에서만 활성화됩니다.
왜 그럴까요?
내가, 내가 볼 수있는 시각적 트리를 검사
그 작업 열 열이 작동하지 않는 동안, 적용된 내 스타일로TextBlock
만들어진 (사람
CellTemplate
없이)합니다 (
은이고
CellTemplate
)은
TextBlock
내부에
ContentPresenter
으로 이루어져 있지만,
TextBlock
에는 스타일이 전혀 없습니다.
해당 문제에 대한 귀하의 설명에 진심으로 감사드립니다. 나는'x : Key' 스타일과'TextBlock'에서 스타일 속성을 고수 할 것입니다. 그것은 더 직접적입니다. 그리고 어쨌든 나는 그것을 모든'DataTemplate'에 넣어야하기 때문에 ... – Nostromo