2009-05-01 9 views
5

Die XAML unten funktioniert nicht (der Text ändert sich nicht, wenn Maus über):TextBlock Text-Eigenschaft kann nicht über Stil-Trigger gesetzt werden, wenn nicht leer - warum?

<Window.Resources> 
    <Style TargetType="TextBlock"> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="true"> 
       <Setter Property="Text" Value="hover"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<Grid> 
    <TextBlock Text="original"/> 
</Grid> 

Aber, wenn das Text-Attribut fehlt:

<Grid> 
    <TextBlock/> 
</Grid> 

Der Text auf der Maus über nicht ändert. Wer kennt die Theorie dahinter?

Antwort

6

Es ist ein DependencyProperty Vorrang Problem, wenn Sie die Einstellung tatsächlich die Eigenschaft als in:

<TextBlock Text="original"/> 

, die in dem Trigger gesetzt Vorrang vor dem Wert annimmt.

siehe

http://msdn.microsoft.com/en-us/library/ms743230.aspx

+0

Dies ist ein großer Link. Erklärt ein _lot_ von dem, was ich dachte, waren meine Fehler und nur verschiedene Ansätze. –

+0

Noch konnten sie es entwerfen, während Stilsetzer Geliebter als lokale Werte sind, style_triggers_ würde höher sein ... Weil sowohl Animationen als auch Datenauslöser den lokalen Wert leicht überschreiben können, könnte Stilauslöser, der dynamisch ist, auch in diese Kategorie fallen. –

Verwandte Themen