0

タイトルは申し訳ありませんが、もっと良いものがある場合は編集してください。

次のようなリソースで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>
4

1 に答える 1

1

申し訳ありませんが、私はこれを解決するために長い時間を費やしました。しかし、今、私はそれを機能させます。この束縛は今でも私を大いに混乱させます。それが誰かを助けることを願っています。

修正:

public class PersonView : ObservableCollection<Person>
{
    public PersonView()
    {
        Add(new Person() { Name = "Luis" });
        Add(new Person() { Name = "Gusth" });
    }
}
于 2012-08-15T23:39:08.167 に答える