Как удалить анимацию WPF по умолчанию в коде C # не XAML - PullRequest
0 голосов
/ 19 июля 2011

Я создаю кнопки динамически, изображения которых являются фоном. Проблема заключается в том, что анимация кнопки WPF по умолчанию при наведении мыши на деформирует мою кнопку и скрывает изображение.

Можно ли как-нибудь создать собственный стиль кнопок для этих кнопок, не создавая пользовательский класс кнопок и не используя что-то вроде myButtton.property = что-то;

в коде C # не XAML, потому что я создаю кнопку динамически.

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

ВЫ можете сделать это, создав шаблон для кнопки в ресурсах ...

Вот пример ...

Код XAML ...

<UserControl.Resources>
        <ControlTemplate x:Key="buttonTemplate">
            <Image Name="btnImage" Source="C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"></Image>
        </ControlTemplate>
    </UserControl.Resources>   
    <Grid Name="layoutRoot">
    </Grid>
</UserControl>

в коде:

Button button = new Button();
            ControlTemplate ct = this.Resources["buttonTemplate"] as ControlTemplate;
            Image img = ct.LoadContent() as Image;
            img.Source = new BitmapImage(new Uri(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg",UriKind.RelativeOrAbsolute));
            button.Template = ct;
            button.Height = 200;
            button.Width = 200;
            layoutRoot.Children.Add(button);

если вы добавляете кнопки из модели представления, вы можете получить шаблон кнопки из ресурсов приложения (поместив ресурс в файл app.xaml)

0 голосов
/ 19 июля 2011

Вы можете установить ControlTemplate кнопки.Поскольку вы не хотите делать это в XAML, вот один из способов, которым вы могли бы сделать это в коде:

string buttonTemplate =
    "<ControlTemplate TargetType=\"Button\">" +
        "<Image Source=\"myImage.gif\" />" +              
    "</ControlTemplate>";
myButton.Template = (ControlTemplate)XamlReader.Parse(template);

Это просто для базовой кнопки с изображением в качестве содержимого.Если вы хотите иметь собственную анимацию для таких действий, как наведение мыши, вы можете добавить XAML в строку кода с помощью VisualStateManager, чтобы позаботиться об этом. VisualStateManager

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...