如何在c#代码中删除WPF的默认动画而不是XAML
本文关键字:动画 默认 XAML WPF 代码 删除 | 更新日期: 2023-09-27 18:02:27
我正在动态创建具有图像作为背景的按钮,问题是默认的WPF按钮动画在鼠标上变形我的按钮并隐藏图像。
是否有任何方法,我可以使我自己的按钮样式这些按钮不创建自定义按钮类,并使用像mybutton。Property = something;
c#代码中的而不是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>
后面的代码:
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文件中)
您可以设置按钮的ControlTemplate。由于您不希望在XAML中这样做,这里有一种方法可以在代码后面实现:
string buttonTemplate =
"<ControlTemplate TargetType='"Button'">" +
"<Image Source='"myImage.gif'" />" +
"</ControlTemplate>";
myButton.Template = (ControlTemplate)XamlReader.Parse(template);
这只是一个以图像为内容的基本按钮。如果你想在鼠标悬停等动作上有自定义动画,你可以使用VisualStateManager将XAML添加到代码隐藏字符串中来处理这个问题。VisualStateManager