我在Windows资源区创建了一个样式:
<Style TargetType="TextBlock">
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
</Style>
我认为这意味着所有文本块都具有此样式,因此当我创建列表视图列时:
<GridViewColumn>
<GridViewColumnHeader Content="Source"/>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Source, Mode=OneWay}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
省略号样式不会应用于列中的文本块。
如果我用x:Key命名样式,那么使用Style = {StaticResource xxx}然后它可以工作 - 为什么这个未命名的方法不起作用?
这是完整的窗口XAML:
<Window x:Class="ListViewStyle.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
</Style>
</Window.Resources>
<ListView ItemsSource="{Binding Rows}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumnHeader Content="Source"/>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Source, Mode=OneWay}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn>
<GridViewColumnHeader Content="Primary"/>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Primary, Mode=OneWay}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn>
<GridViewColumnHeader Content="Secondary"/>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Secondary, Mode=OneWay}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Window>
答案 0 :(得分:0)
您可能正在定义另一种TextBlock
样式,更靠近TextBlock
本身。
WPF搜索样式的方式从要设置样式的项开始。如果它设置了Style
属性,那么它会使用它。否则,它使用它找到的第一个样式检查父资源,然后是祖父母的资源,等等。如果它在您的应用程序中找不到样式,则使用默认样式。
其中一个TextBlock
的祖先可能有TextBlock
种风格。如果它在那里找到了一个样式,它就不会在窗口级别使用它。
您可以使用BasedOn
属性指定一种样式基于另一种样式。