【发布时间】:2021-08-13 14:13:36
【问题描述】:
我试图动态地将一些 WPF 事件添加到我的控件中。我也尝试在 Loaded 事件之外添加事件,但当时样式为空。我不知道该怎么办。
这是我的代码:
public tagged_button()
{
InitializeComponent();
this.Loaded += delegate
{
Setter setter = new Setter();
setter.Property = tagged_button.BackgroundProperty;
setter.Value = Brushes.Red;
Trigger trigger = new Trigger();
trigger.Property = UIElement.IsMouseOverProperty;
trigger.Value = true;
trigger.Setters.Add(setter);
Style style = this.Style;
style.Triggers.Add(trigger);
this.Style.Triggers.Add(trigger);
};
}
但是我得到了这个错误。 :
System.InvalidOperationException
HResult=0x80131509
Translated to English: "After a 'TriggerCollection' is in use (sealed), it cannot be modified."
StackTrace:
at System.Windows.TriggerCollection.CheckSealed()
at System.Windows.TriggerCollection.InsertItem(Int32 index, TriggerBase item)
at System.Collections.ObjectModel.Collection`1.Add(T item)
at UI_Deneme.user_controls.tagged_button.<.ctor>b__4_0(Object <p0>, RoutedEventArgs <p1>)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
...
我认为我不应该在“加载”事件之后添加该触发器,但我不知道何时添加它。我应该什么时候添加触发器?
【问题讨论】:
-
我认为 Thomas Levesque 对这个问题的回答可能适用 stackoverflow.com/a/3821757/5869304