0

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

1 に答える 1

0

TextBlockそれ自体に近い別のスタイルを定義している可能性がありTextBlockます。

WPF がスタイルを検索する方法は、スタイルを設定するアイテムから始まります。プロパティを設定するStyleと、それが使用されます。それ以外の場合は、最初に見つかったスタイルを使用して、親のリソース、次にその祖父母のリソースなどをチェックします。アプリケーションでスタイルが見つからない場合は、デフォルトのスタイルが使用されます。

の祖先の1 つにおそらくTextBlockスタイルがあります。TextBlockそこにスタイルが見つかった場合、ウィンドウ レベルのスタイルは使用されません。

プロパティを使用して、あるスタイルが別のスタイルに基づいていることを指定できますBasedOn

于 2012-04-19T15:18:40.283 に答える