首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C#代码生成包含触发器的WPF样式

从C#代码生成包含触发器的WPF样式
EN

Stack Overflow用户
提问于 2011-06-08 01:21:54
回答 1查看 10.2K关注 0票数 8

我在从C#代码生成包含触发器的WPF样式时遇到了一些问题。这是我想通过C#生成的WPF代码。

代码语言:javascript
复制
<Style.Triggers>
    <Trigger Property="IsMouseOver" Value="true">
        <Setter Property="BitmapEffect">
            <Setter.Value>
                <OuterGlowBitmapEffect GlowColor="Gold" GlowSize="10" />
            </Setter.Value>
        </Setter>
    </Trigger>
</Style.Triggers>

我已经尝试这样生成了:

代码语言:javascript
复制
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

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-08 01:30:40

直接转换为:

代码语言:javascript
复制
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);

这可以清理为:

代码语言:javascript
复制
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 },
};

但这是基于您的编码风格。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6269123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档