从 C# 代码生成包含触发器的 WPF 样式 [英] generating WPF styles containing Triggers from C# code
本文介绍了从 C# 代码生成包含触发器的 WPF 样式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在从 C# 代码生成包含触发器的 WPF 样式时遇到了一些麻烦.这是我想通过 C# 生成的 WPF 代码.
i had some trouble generating WPF styles containing Triggers from C# code. Here's the WPF code i want to generate trough C#.
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="BitmapEffect">
<Setter.Value>
<OuterGlowBitmapEffect GlowColor="Gold" GlowSize="10" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
我已经尝试过这样生成:
I alredy tried to generate like this :
Style style = new Style();
Trigger trigger = new Trigger();
Setter setter = new Setter();
style.Triggers.Add(trigger);
trigger.Property = (DependencyProperty.Register("IsMouseOver", Type.GetType("IsMouseOver"), Type.GetType("Canvas"))); //Line not tested
//trigger.Setters.Add(new Setter(new BitmapEffect()); //Line not working
但我不知道如何使用带有 BitmapEffect 的 trigger.Setters
But i could not figure out how to use trigger.Setters with a BitmapEffect
提前致谢!
推荐答案
直接翻译为:
OuterGlowBitmapEffect effect = new OuterGlowBitmapEffect();
effect.GlowColor = Colors.Gold;
effect.GlowSize = 10;
Setter setter = new Setter();
setter.Property = UIElement.BitmapEffectProperty;
setter.Value = effect;
Trigger trigger = new Trigger();
trigger.Property = UIElement.IsMouseOverProperty;
trigger.Value = true;
trigger.Setters.Add(setter);
Style style = new Style();
style.Triggers.Add(trigger);
这可以清理到:
var effect = new OuterGlowBitmapEffect() {
GlowColor = Colors.Gold,
GlowSize = 10,
};
var setter = new Setter() {
Property = UIElement.BitmapEffectProperty,
Value = effect,
};
var trigger = new Trigger() {
Property = UIElement.IsMouseOverProperty,
Value = true,
Setters = { setter },
};
var style = new Style() {
Triggers = { trigger },
};
但这取决于您的编码风格.
But this is based on your coding style.
这篇关于从 C# 代码生成包含触发器的 WPF 样式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文