C# Windows Phone用户控件中的依赖性属性和属性问题
我试图在我的Windows phone项目中添加一个用户控件,该控件必须显示我的个人广告。该控件对于默认嵌入广告非常有效,但当我想从Windows phone项目中添加个人广告时,我有两个不同的问题 方法1:财产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
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”方法中设置断点以检查这一点?