Wie ist der Zusammenhang zwischen einem Binding und einem DataContext mit einem GridView im XAML-Code?
Mein Grid ist so definiert:
<ListView ItemsSource="{Binding Path=PersonCollection}" Name="grid" IsSynchronizedWithCurrentItem="true" SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Header="Vorname" DisplayMemberBinding="{Binding Firstname, Mode=TwoWay}"/>
<GridViewColumn Header="Nachname" DisplayMemberBinding="{Binding Lastname, Mode=TwoWay}"/>
</GridView>
</ListView.View>
</ListView>
Wenn ich jetzt außerhalb auf den aktuellen Vornamen zugrifen will geht das nur so:
<TextBox DataContext="{Binding Path=PersonCollection}" Text="{Binding Path=Firstname, Mode=TwoWay}"/>
Das hier:
<TextBox Text="{Binding Path=PersonCollection.Firstname, Mode=TwoWay}"/>
Ist für mich equivalent funktioniert aber nicht. Wieso?
DataContext musst du nicht angeben. Der gilt dann für alle Unterelemente der Textbox als Datenquelle, solange nix anderes bei den Unterelementen angegeben ist.
Du kannst Source verwenden um die Datenquelle anzugeben.
In Binding Path ist die Eigenschaft als Name hinterlegt. Bei DataContext und bei Source die Instanz.