WPF PropertyGrid поддерживает множественный выбор
Эта документация все еще действительна или я что-то упустил?
PropertyGrid
контроль не имеет SelectedObjects
или же SelectedObjectsOverride
члены. Я использую последнюю версию (2.5) набора инструментов против.NET Framework 4.0.
ОБНОВИТЬ
Ответ @faztp12 помог мне. Для тех, кто ищет решение, выполните следующие действия:
Свяжите свой
PropertyGrid
"sSelectedObject
Свойство для первого выбранного элемента. Что-то вроде этого:<xctk:PropertyGrid PropertyValueChanged="PG_PropertyValueChanged" SelectedObject="{Binding SelectedObjects[0]}" />
Слушать
PropertyValueChanged
событиеPropertyGrid
и используйте следующий код для обновления значения свойства для всех выбранных объектов.private void PG_PropertyValueChanged(object sender, PropertyGrid.PropertyValueChangedEventArgs e) { var changedProperty = (PropertyItem)e.OriginalSource; foreach (var x in SelectedObjects) { //make sure that x supports this property var ProperProperty = x.GetType().GetProperty(changedProperty.PropertyDescriptor.Name); if (ProperProperty != null) { //fetch property descriptor from the actual declaring type, otherwise setter //will throw exception (happens when u have parent/child classes) var DeclaredProperty = ProperProperty.DeclaringType.GetProperty(changedProperty.PropertyDescriptor.Name); DeclaredProperty.SetValue(x, e.NewValue); } } }
Надеюсь, что это поможет кому-то в будущем.
1 ответ
Что я делал, когда у меня была похожая проблема, я был подписан на PropertyValueChanged
и имел List
наполнил себя SelectedObjects
,
Я проверил, если содержимое списка, где того же типа, а затем, если это так, я изменил свойство в каждом из этих элементов:
PropertyItem changedProperty = (PropertyItem)e.OriginalSource;
PropertyInfo t = typeof(myClass).GetProperty(changedProperty.PropertyDescriptor.Name);
if (t != null)
{
foreach (myClass x in SelectedItems)
t.SetValue(x, e.NewValue);
}
Я использовал это, потому что мне нужно было сделать Layout Designer, и это позволило мне вместе изменять свойства нескольких элементов:)
Надеюсь, это помогло:)
Ref Xceed Docs