【问题标题】:generating WPF styles containing Triggers from C# code从 C# 代码生成包含触发器的 WPF 样式
【发布时间】:2011-06-07 17:21:53
【问题描述】:

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

<Style.Triggers>
    <Trigger Property="IsMouseOver" Value="true">
        <Setter Property="BitmapEffect">
            <Setter.Value>
                <OuterGlowBitmapEffect GlowColor="Gold" GlowSize="10" />
            </Setter.Value>
        </Setter>
    </Trigger>
</Style.Triggers>

我已经尝试过这样生成:

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

提前谢谢你!

【问题讨论】:

    标签: c# wpf xaml styles


    【解决方案1】:

    直接翻译是:

    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 },
    };
    

    但这取决于你的编码风格。

    【讨论】:

    • 这可能是一个愚蠢的问题,但是如何在代码中将触发器添加到 Datagrid 的“文本”属性?在 XAML 中可以使用此属性,但在代码中我只能找到 ContentProperty 和 TextInputEvent
    猜你喜欢
    • 2010-10-15
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 2012-06-02
    • 2012-04-23
    相关资源
    最近更新 更多