5

このドキュメントはまだ有効ですか、それとも何か不足していますか?

http://doc.xceedsoft.com/products/XceedWpfToolkit/Xceed.Wpf.Toolkit~Xceed.Wpf.Toolkit.PropertyGrid.PropertyGrid~SelectedObjects.html

PropertyGridSelectedObjectsコントロールにはまたはSelectedObjectsOverrideメンバーがないようです。.NET Framework 4.0 に対して Toolkit の最新バージョン (2.5) を使用しています。

アップデート

@ faztp12の回答でうまくいきました。解決策を探している他の人は、次の手順に従ってください。

  1. PropertyGridSelectedObjectプロパティを最初に選択したアイテムにバインドします。このようなもの:

    <xctk:PropertyGrid PropertyValueChanged="PG_PropertyValueChanged" SelectedObject="{Binding SelectedObjects[0]}"  />
    
  2. 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);
        }
      }
    }
    

これが誰かの助けになることを願っています。

4

1 に答える 1