генерация стилей WPF, содержащих триггеры из кода C # - PullRequest
7 голосов
/ 07 июня 2011

У меня возникли проблемы при создании стилей WPF, содержащих триггеры из кода C #.Вот код WPF, который я хочу сгенерировать через C #.

<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

Заранее спасибо!

1 Ответ

9 голосов
/ 07 июня 2011

Прямой перевод будет:

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

Но это зависит от вашего стиля кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...