如何在C#代码而不是XAML中删除WPF默认动画
我正在动态创建以图像为背景的按钮,问题是鼠标悬停时默认的WPF按钮动画使我的按钮变形并隐藏图像 是否有任何方法可以为这些按钮创建自己的按钮样式,而无需创建自定义按钮类,并使用类似MyButton.property=something的东西如何在C#代码而不是XAML中删除WPF默认动画,c#,wpf,button,C#,Wpf,Button,我正在动态创建以图像为背景的按钮,问题是鼠标悬停时默认的WPF按钮动画使我的按钮变形并隐藏图像 是否有任何方法可以为这些按钮创建自己的按钮样式,而无需创建自定义按钮类,并使用类似MyButton.property=something的东西 在C#代码中不是XAML,因为我正在动态创建按钮。您可以设置按钮的ControlTemplate。由于您不希望在XAML中执行此操作,因此有一种方法可以在代码隐藏中执行: string buttonTemplate = "<ControlTemp
在C#代码中不是XAML,因为我正在动态创建按钮。您可以设置按钮的ControlTemplate。由于您不希望在XAML中执行此操作,因此有一种方法可以在代码隐藏中执行:
string buttonTemplate =
"<ControlTemplate TargetType=\"Button\">" +
"<Image Source=\"myImage.gif\" />" +
"</ControlTemplate>";
myButton.Template = (ControlTemplate)XamlReader.Parse(template);
字符串按钮模板=
"" +
"" +
"";
myButton.Template=(ControlTemplate)XamlReader.Parse(Template);
这只是一个以图像为内容的基本按钮。如果您想在诸如鼠标之类的操作上拥有自定义动画,您可以使用VisualStateManager将XAML添加到代码隐藏字符串中来解决这一问题。您可以通过在参考资料中为按钮创建模板来实现这一点 这是一个样本 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>
如果要从视图模型添加按钮,可以从应用程序资源(通过将资源放入app.xaml文件)获取按钮模板
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);