Позиционирование фонового изображения для события MouseEnter (hover) в Silverlight - PullRequest
1 голос
/ 14 февраля 2011

При запуске события MouseEnter для TextBlock, вложенного в элемент Border, я хочу обрезать определенную часть изображения (эквивалентную background-position CSS: -1100px -24px), чтобы поместить его в качестве фона элемента Border , Ниже приведен код софта:

XAML

<Border Margin="42,9,0,0">
    <TextBlock Style="{StaticResource MenuItem}" Name="metallicaButton" MouseEnter="metallicaButton_MouseEnter" Text="metallica" />
</Border>

C #

 private void metallicaButton_MouseEnter(object sender, MouseEventArgs e)
    {
        /*
           ImageBrush img = new ImageBrush();
           img.ImageSource = new BitmapImage(new Uri(@"Images/frame.png", UriKind.Relative)); ;
           img.Stretch = Stretch.None;            

           need to develop a subsitute for CSS code:
           span:hover{background-position: -1100px -24px;}

           ...something more versatile than:
           img.AlignmentX = AlignmentX.Center;
           img.AlignmentY = AlignmentY.Bottom;

           ((Border)metallicaButton.Parent).Background = img;

                         OR

           Rect r = Rect.Empty;
           r.X = -1100;
           r.Y = -24;
           RectangleGeometry g = new RectangleGeometry();
           g.Rect = r;
           Image src = new Image();
           src.Source = new BitmapImage(new Uri(@"Images/frame.png", UriKind.Relative)); ;
           src.Clip = g;

           is there a way to do this:
           ((Border)((TextBlock)sender).Parent).Background = src;
        */
    }

есть ли способ сделать это?

1 Ответ

0 голосов
/ 16 февраля 2011

Поскольку вы в любом случае назвали свой TextBlock «metallicaButton», есть ли какая-то причина, почему бы вам не использовать фактический элемент управления Button и не создавать этот эффект как визуальное состояние в пользовательском шаблоне кнопки с помощью XAML?

...