Windows Phone Usercontrol中的依赖项属性和属性问题

时间:2014-07-01 11:52:31

标签: c# wpf xaml windows-phone-8 user-controls

我尝试在我的Windows手机项目中添加一个usercontrol,以显示我的个人广告。该控件适用于默认嵌入广告,但当我想从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手机项目

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

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

结果方法2 Visual Studio只显示应用程序,并显示嵌入在usercontrol中的广告,而不是Windows手机项目中设置的广告。永远不会调用AdRotator.Ads setter和OnAdsSourceChanged。

我的搜索 我找到了这些科目: - Bound Property Setter not getting Called - WPF UserControl Dependency Property Setter not triggering

我无法想象如何让它发挥作用。

感谢您的帮助。

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

0 个答案:

没有答案