2016-07-25 60 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#):

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

我已經調查使用System.Drawing中和使用FontStyle.Italic的;儘管我實際上並沒有成功實現它。

+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