2

我对在 xaml 中设置的属性有疑问。
我制作了一个具有依赖属性“MidiChanel”的用户控件。
我在 xaml 中将此属性的值设置为 10。在用户控件的构造函数中,我需要此值将其添加到字典并将值传递给我的用户控件的子类。

问题是,在构造函数中,即使在调用 initializecomponents 之后,属性仍然具有其默认值,而不是在 xaml 中设置的值。事实上,它根本没有设置。

如果我将“MidiChanel”属性更改为普通属性,则会设置该值,但设置该值的不是 userControl 的 initializecomponents,而是主窗口的 initializecomponents。调用堆栈 = Main.InitializeComponents,userControl 的构造函数(值尚不可用),“MidiChanel”的 Setter 已设置。(由谁?,调用堆栈说 Main.InitializeComponents)。

我是一名 winforms 开发人员,发现这一切都很奇怪。在 Main.InitializeComponents 之后,我可以遍历主页中的所有 userControl,并在此处执行所有操作,但这似乎是一件奇怪的事情。

这里有什么建议吗?

4

1 回答 1

1

您可以设置一个回调方法,当您的dependenyProperty 更改时将引发该方法

   public int SomeProp
    {
        get { return (int)GetValue(SomePropProperty); }
        set { SetValue(SomePropProperty, value); }
    }

    // Using a DependencyProperty as the backing store for SomeProp.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty SomePropProperty =
        DependencyProperty.Register("SomeProp", typeof(int), typeof(yourOwnerclass), new PropertyMetadata(new PropertyChangedCallback(OnSomePropertyChnaged)));

    public static void OnSomePropertyChnaged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        (d as yourOwnerclass).SomeFunction();
    }
于 2013-04-28T15:32:00.457 回答