2016-07-25 13 views
0

私は一部の非イタリック体のテキストを含むテキストブロックを持っています。マウスがテキストブロックに入ると、そのコードは後ろのコードの使用によって変更されます。私は、テキストをイタリック体に変更する機能も備えています。これは私がこれまで持っているものです。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"/> 

の背後にあるコード(C#の):私はSystem.DrawingとFontStyle.Italicの使用を使用してに見ている

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"; 
    } 
} 

。私は実際にそれを動作させることに成功しなかった。

+1

本当にスタイルとトリガーを使用する必要があります。 –

答えて

1

これは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"> 
      <TextBlock.Style> 
      <Style TargetType="TextBlock"> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="FontStyle" Value="Italic" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBlock.Style> 
     </TextBlock> 

のために作られた。しかし、あなたが本当にしたい場合は、ここであなたはコードビハインドからその機能を実装する方法の例は何です。

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

返信いただきありがとうございます!私は、このシナリオのためにコードを使用しているという悪い習慣を知っています。私は、スタイルとトリガー(厳密にコードの背後にある)を使用せずにこれを実装する方法があるかどうかを知りたいと思っています。 – user5890660

+0

私は自分の答えを更新しました。 – Jace

+0

ありがとうございました!完璧に動作します! – user5890660