我尝试在我的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:(