2016-07-25 12 views
0

Ich habe einen Textblock, der nicht kursiven Text enthält. Wenn die Maus den Textblock betritt, ändert sich der Text durch Verwendung des dahinter liegenden Codes. Ich möchte, dass der Code dahinter auch die Möglichkeit hat, den Text kursiv zu ändern. Das ist, was ich habe, so weit:Ändern von Text in Textblock in kursiv auf MouseEnter

XAML:

<TextBlock x:Name="block1" 
    Background="Cyan" 
    Foreground="{StaticResource myBrush2}" 
    Grid.Column="0" 
    Grid.Row="0" 
    Height="30" 
    HorizontalAlignment="Center" 
    MouseEnter="TextBlock_MouseEnter" 
    MouseLeave="TextBlock_MouseLeave" 
    Padding="0,7,0,0" 
    Text ="Hover Me!" 
    TextAlignment="Center" 
    Width="100"/> 

-Code Behind (C#):

public void TextBlock_MouseEnter(object sender, MouseEventArgs e) 
{ 
    string blockName = ((TextBlock)sender).Name; 
    var block = sender as TextBlock; 
    if (block != null && blockName == "block1") 
    { 
     block.Text = "Yo! I'm TextBlock1"; 
    } 
} 

ich in ausgesehen haben System.Drawing und die Verwendung von FontStyle.ITALIC verwendet wird; obwohl es mir nicht gelungen war, es tatsächlich zum Laufen zu bringen.

+1

Sie sollten wirklich Stile und Trigger dafür verwenden. –

Antwort

1

Dies ist, was XAML gemacht wurde

<TextBlock x:Name="block1" 
    Background="Cyan" 
    Foreground="{StaticResource myBrush2}" 
    Grid.Column="0" 
    Grid.Row="0" 
    Height="30" 
    HorizontalAlignment="Center" 
    MouseEnter="TextBlock_MouseEnter" 
    MouseLeave="TextBlock_MouseLeave" 
    Padding="0,7,0,0" 
    Text ="Hover Me!" 
    TextAlignment="Center" 
    Width="100"> 
      <TextBlock.Style> 
      <Style TargetType="TextBlock"> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="FontStyle" Value="Italic" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBlock.Style> 
     </TextBlock> 

Aber, wenn Sie wirklich wollen, hier ist ein Beispiel dafür, wie Sie diese Funktionalität von Code-Behind implementieren könnte.

private void block1_MouseEnter(object sender, MouseEventArgs e) 
{ 
    SetFontStyle(FontStyles.Italic); 
} 

private void block1_MouseLeave(object sender, MouseEventArgs e) 
{ 
    SetFontStyle(FontStyles.Normal); 
} 
private void SetFontStyle(FontStyle style) 
{ 
    block1.FontStyle = style; 
} 
+0

Danke für die Antwort! Ich kenne seine schlechte Praxis, den Code für dieses Szenario zu verwenden. Ich bin jedoch neugierig zu wissen, ob es eine Möglichkeit gibt, dies zu implementieren, ohne Stile und Trigger (streng hinter Code) zu verwenden. – user5890660

+0

Ich habe meine Antwort aktualisiert. – Jace

+0

Danke Kumpel! Funktioniert perfekt! – user5890660

Verwandte Themen