C# Silverlight 2:是否在动态创建的对象上更改了InotifyProperty?
这和一个问题是一样的,但那个问题是关于正常的C。 这是Silverlight 2,我没有ICustomTypeDescriptor 这又是一个问题: 比如说,我有一些开关面板(对于那些喜欢类比的)。 每个开关面板都有一个名称(字符串)为On或Off状态(bool)的开关。 switchpanel和Switch是具有INotify接口的对象 使用开关名称,我创建了集合中所有可能开关名称的列表,并创建了一个动态类,该类将所有这些名称作为属性C# Silverlight 2:是否在动态创建的对象上更改了InotifyProperty?,c#,silverlight,reflection,dynamic,C#,Silverlight,Reflection,Dynamic,这和一个问题是一样的,但那个问题是关于正常的C。 这是Silverlight 2,我没有ICustomTypeDescriptor 这又是一个问题: 比如说,我有一些开关面板(对于那些喜欢类比的)。 每个开关面板都有一个名称(字符串)为On或Off状态(bool)的开关。 switchpanel和Switch是具有INotify接口的对象 使用开关名称,我创建了集合中所有可能开关名称的列表,并创建了一个动态类,该类将所有这些名称作为属性 SwitchPanel1 (Switches( Switc
SwitchPanel1 (Switches( Switch1 ("Main",On) , Switch2("Slave",Off)))
SwitchPanel2 (Switches( Switch1 ("Bilge",On) , Switch2("Main",Off)))
产生一个
(Main,Bilge,Slave)
生成的动态类具有以下属性:
SwitchPanel : (SwitchPanel)
Main : (Switch)
Bilge : (Switch)
Slave: (Switch)
其思想是,如果开关面板有一个带有属性名称的开关,它将被放置在该属性上。所以使用一点linq
propeties["Main"].SetValue(newSwitchType,SwitchPanel.Switches.FirstOrDefault(sw => sw.Name == "Main"));
我想将这个新的动态类强制转换为INotfyPropertyChanged,并捕获这些新属性的实际更改,因此如果开关更改状态,动态对象将报告它
为什么??它需要显示在列表视图中,我使用的列表视图通过提供属性名而不是绑定路径来进行绑定
它还试图通过对INotifyPropertyChanged强制转换对象来捕获INotify事件。这意味着当事情发生变化时,它将进行排序和/或分组。您可以创建一个派生的字符串通用字典bool,它实现INotifyPropertyChanged。索引器可以如下所示:
public new bool this[string key]
{
get
{
if( this.ContainsKey(key))
return base[key];
return default(bool);
}
set
{
base[key] = value;
OnPropertyChanged(key.ToString());
}
}
开关面板中的使用自定义IValueConverter将开关绑定到字典:
这样,您仍然可以拥有一个名称的动态集合,每个名称都有一个关联的bool值,并直接绑定到数据,而无需创建动态类型。您可以创建一个实现INotifyPropertyChanged的字符串派生通用字典bool。索引器可以如下所示:
public new bool this[string key]
{
get
{
if( this.ContainsKey(key))
return base[key];
return default(bool);
}
set
{
base[key] = value;
OnPropertyChanged(key.ToString());
}
}
开关面板中的使用自定义IValueConverter将开关绑定到字典:
这样,您仍然可以拥有一个名称的动态集合,每个名称都有一个关联的bool值,并直接绑定到数据,而无需创建动态类型。。很快就可以试一试了。很有趣。我很快就会试一试的。