WPFのこのシナリオでは、オブジェクトメソッドにどのようにバインドしますか?
public class RootObject
{
public string Name { get; }
public ObservableCollection<ChildObject> GetChildren() {...}
}
public class ChildObject
{
public string Name { get; }
}
XAML:
<TreeView ItemsSource="some list of RootObjects">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type data:RootObject}"
ItemsSource="???">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type data:ChildObject}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
ここでは、GetChildren
各RootObject
ツリーのメソッドにバインドしたいと思います。
EDITのへのバインドは、ObjectDataProvider
アイテムのリストにバインドしているため機能しないようでObjectDataProvider
、静的メソッドが必要か、それが独自のインスタンスを作成してそれを使用しています。
たとえば、マットの答えを使用すると、次のようになります。
System.Windows.Dataエラー:33:ObjectDataProviderはオブジェクトを作成できません。Type = 'RootObject'; エラー= 'コンストラクタのパラメータが間違っています。'
System.Windows.Dataエラー:34:ObjectDataProvider:タイプのメソッドを呼び出そうとして失敗しました。Method = 'GetChildren'; Type = 'RootObject'; エラー= '指定されたメンバーをターゲットで呼び出すことはできません。TargetException: 'System.Reflection.TargetException:非静的メソッドにはターゲットが必要です。