C# Windows Phone用户控件中的依赖性属性和属性问题

C# Windows Phone用户控件中的依赖性属性和属性问题,c#,wpf,xaml,windows-phone-8,user-controls,C#,Wpf,Xaml,Windows Phone 8,User Controls,我试图在我的Windows phone项目中添加一个用户控件,该控件必须显示我的个人广告。该控件对于默认嵌入广告非常有效,但当我想从Windows phone项目中添加个人广告时,我有两个不同的问题 方法1:财产 public static PersonalAdsCollection Ads { get { return myAds; } set { myAds = value; } } 方法2:依赖性属性 public Pers

我试图在我的Windows phone项目中添加一个用户控件,该控件必须显示我的个人广告。该控件对于默认嵌入广告非常有效,但当我想从Windows phone项目中添加个人广告时,我有两个不同的问题

方法1:财产

    public static PersonalAdsCollection Ads
    {
        get { return myAds; }
        set { myAds = value; }
    }
方法2:依赖性属性

    public PersonalAdsCollection Ads
    {
        get { return (PersonalAdsCollection)GetValue(AdCollectionProperty); }
        set
        {
            SetValue(AdCollectionProperty, value);
            //this.Dispatcher.BeginInvoke(() => myAds = value);
            //myAds = value;
        }
    }

    public static readonly DependencyProperty AdCollectionProperty =
        DependencyProperty.Register(
            "Ads",
            typeof(PersonalAdsCollection), 
            typeof(AdRotator),
            new PropertyMetadata(null, OnAdsSourceChanged)
        );
    private static void OnAdsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        myAds = (PersonalAdsCollection)e.NewValue;
    }
  //in the constructor :
  //SetValue(AdCollectionProperty, new PersonalAdsCollection());
WINDOWS PHONE项目

    <myAdRotator:AdRotator
        VerticalAlignment="Bottom" 
        >
        <myAdRotator:AdRotator.Ads>
            <myAdRotator:PersonalAd
                 LocalImageUrl="/Assets/pub480x80.jpg"
                 LinkUrl=""
                />
        </myAdRotator:AdRotator.Ads>
    </myAdRotator:AdRotator>

结果方法1 Visual studio在Windows phone项目Visual xaml视图中显示广告,但Windows phone项目未编译,因为它找不到AdRotator.Ads属性

结果方法2 VisualStudio只显示应用程序运行并显示嵌入在usercontrol中的广告,而不是Windows phone项目中设置的广告。从未调用AdRotator.Ads setter和OnadSourceChanged

我的搜索 我发现受试者: - -

我不知道该怎么做

谢谢你的帮助


编辑:使用修改后的代码,它在构造函数的SetValue之后编译并调用OnadSourceChanged。。。但它并不关心Windows phone应用程序项目中定义的Xaml:(

方法1中的
PersonalAdsCollection
是否从IList继承?从ObservableCollection继承的属性不能是静态的。它应该是
公共PersonalAdsCollection广告
,就像方法2一样。感谢Clemens。方法1仍然没有编译。XamlParserError集合属性“\u implicit\u items”为空。[Line:34 Position:30]。方法2与新PersonalAdsCollectionMETHOD 2的错误相同,方法2为null,而不是新的PersonalAdsCollectionMETHOD 2:如果我没有记错的话,当您从XAML设置dependecy属性的值时,该属性不是通过setter设置的,而是直接设置的“AdCollectionProperty”的值。因此,“SetValue”从未调用,也从未调用过OnadSourceChanged方法。能否在setter和“OnadSourceChanged”方法中设置断点以检查这一点?