ExpanderIsExpanded在如下代码中绑定:http://msdn.microsoft.com/en-us/library/ms754027.aspx如何绑定IsExpanded到MyData对象列表,其中每个对象具有IsExpanded属性?这行不通!我的数据是列表;GroupNode是一个包含通知属性更改属性IsExpanded的类。因此,如果我手动打开其中一个扩展器,它应该将MyData的GroupNode的IsExpanded属性设置为true。做到这一点并不容易,因为GroupItem的DataContext是CollectionViewGroup的一个实例,而这个类没有IsExpanded属性。但是,您可以在GroupDescription中指定一个转换器,它允许您为组的“名称”(CollectionViewGroup.Name属性)返回自定义值。这个“名字”可以是任何东西;在您的情况下,您需要它是一个包装组名称(例如分组键)并具有IsExpanded属性的类:这是一个示例:publicclassExpandableGroupName:INotifyPropertyChanged{privateobject_name;公共对象名称{获取{返回_name;}set{if(_name!=value){_name=value;OnPropertyChanged("名称");}}}私人布尔?_isExpanded=false;公共布尔?IsExpanded{得到{返回_isExpanded;}set{if(_isExpanded!=value){_isExpanded=value;OnPropertyChanged("IsExpanded");}}}#regionINotifyPropertyChanged成员publiceventPropertyChangedEventHandlerPropertyChanged;protectedvirtualvoidOnPropertyChanged(stringpropertyhandlerNamed){(handler!=null)handler(this,newPropertyChangedEventArgs(propertyName));}#endregionpublicoverrideboolEquals(objectobj){returnobject.Equals(obj,_name);}publicoverrideintGetHashCode(){return_name!=空?_name.GetHashCode():0;}publicoverridestringToString(){return_name!=null_name.ToString():string.Empty;}}这是转换器:publicclassExpandableGroupNameConverter:IValueConverter{#regionIValueConverterMemberspublicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){returnnewExpandableGroupName{Name=value};}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){vargroupName=valueasExpandableGroupName;if(groupName!=null)返回groupName.Name;返回Binding.DoNothing;}#endregion}在XAML中,只需声明分组如下:然后绑定IsExpanded属性:以上就是C#学习教程的全部内容:expanderIsExpanded绑定分享,如果对大家有用还需要了解更多关于C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
