タイトルは申し訳ありませんが、もっと良いものがある場合は編集してください。
次のようなリソースでwpfでオブジェクト作成を使用すると、動作するコードがあります。
<local:PersonView x:Key="Persons"/>
しかし、メインウィンドウで作成されたオブジェクトを使用したいのですが、作業コードは次のとおりです。
<Grid>
<Grid.Resources>
<local:PersonView x:Key="Persons"/>
<CollectionViewSource x:Key="ViewPersons" Source="{Binding Source={StaticResource Persons}, Path=Persons}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Name"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Grid.Resources>
<ListView ItemsSource="{Binding Source={StaticResource ViewPersons}}">
<ListView.View>
<GridView>
<GridViewColumn Width="100" Header="Name" DisplayMemberBinding="{Binding Name}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
私が使用するクラス:
public class Person
{
public string Name { get; set; }
}
public class PersonView
{
public ObservableCollection<Person> Persons { get; set; }
public PersonView()
{
Persons = new ObservableCollection<Person>();
Persons.Add(new Person() { Name = "Luis" });
Persons.Add(new Person() { Name = "Gusth" });
}
}
このコードは機能しますが、CollectionViewSource をメインウィンドウで作成されたオブジェクトにバインドしたいと考えています。
public partial class MainWindow : Window
{
public PersonView BindThis { get; set; }
public MainWindow()
{
InitializeComponent();
BindThis = new PersonView();
}
}
私はこれを試しますが、うまくいきません:
<CollectionViewSource x:Key="ViewPersons" Source="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=BindThis}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Name"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>