具有DependencyProperty的UserControl的多个实例

时间:2015-03-12 13:48:44

标签: c# xaml

我创建了一个使用多个UserControl的{​​{1}}。当我只有DependencyProperties的一个实例时,一切都按预期工作。但是,如果我创建了对象的多个实例,则只有第一个实例可用(注意:不会抛出任何错误)。我唯一能想到的是拥有UserControl的多个实例是不可能的。它是否正确?如果是这样,有没有替代方案/解决方法呢?

以下是我设置DependencyProperty的方式示例:

DependencyProperties

UserControl的XML:

    public int Value
    {
        get { return (int)GetValue(ValueProperty); }
        set { SetValue(ValueProperty, value); }
    }

    public static DependencyProperty ValueProperty=
        DependencyProperty.Register("Value", typeof(int), typeof(DataBar), new PropertyMetadata(0));

ShadowRec&根本不显示DataRec。

更新1:

我想我找到了问题的根本原因。在UserControl的后端,我修改了ShadowRec& DataRec,存储为私有静态变量。当我禁用代码的这一部分时,问题就消失了。不确定是否正在抓取错误的实例,或者是否存在更具体的方式我应该存储实例。

1 个答案:

答案 0 :(得分:0)

问题是由实例变量引起的。通过删除实例变量并修改ShadowRec& DataChangedCallback方法中的DataRec,问题得到了解决。对于后来遇到类似问题的人来说,它看起来应该是这样的:

    private static void OnValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args)
    {
        GraphBar gb = sender as GraphBar;
        // do something here, such as: gb.DataRec.Width = 15;
    }