2012-04-19 18 views
0

私は私の窓のリソース領域に作成したスタイルを持っている:テキストブロックスタイルが適用されないのはなぜですか?

<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}を使用すると動作します。名前のないアプローチはなぜ機能しませんか?あなたはTextBlock自身に近い別のTextBlockスタイルを定義することができる

<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

私はこれが古い質問であることを知っていますが、今日はまったく同じ質問が尋ねられ、あなたの質問がそこにリンクされていました。私はそこに答えを提供しました。http://stackoverflow.com/questions/40385905/why-doesnt-my-style-get-applied/40388383#40388383 –

答えて

0

はここで完全なウィンドウのXAMLです。

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

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

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

+0

テキストブロックには1つのスタイルしかありませんが、それはウィンドウリソースにあります。 – imekon

+0

ええと、おそらくどこかでシーンの裏に定義されているものがあります。他の理由は考えられません。 –

関連する問題