Meine Hauptfrage ist über Binding Fall in der Szene, die wir mehrere Quellen für ein Steuerelement (eine Combobox in einem Datagrid) haben (oder DataContext und Itemsource). Wie können wir dann herausfinden, welche Quelle die Bindung verwenden wird? (irgendeine Syntax, um das zu verdeutlichen)ItemsSource vs DataContext im Bindungsfall
Angenommen, ein Datagrid hat eine itemssource = "Liste der Spieler" datacontext = "Manager" , und hat eine Combobox als eine Art Spalte. Wir gehen auch davon aus, dass jeder Spieler eine Inventareigenschaft hat, die ein Sammlertyp ist.
dann in der datagrid.columns:
- Die Stromquelle jeder Spalte (für die Bindung) ist ein Player (dies ist, wie ich es verstehe so weit). Wir können nur an das Eigentum des Spielers binden, nicht an das Eigentum des DataContext "Managers". Es gibt keine Möglichkeit, an die Eigenschaft des "Managers" zu binden. Hab ich recht?
- Wenn wir jedoch zu den Combobox-Spalten wechseln, gehe ich davon aus, dass ich itemssource = 'player's inventory' von combobox lasse, dann wird die aktuelle Quelle für comboboxItem jedes Element im Inventar sein. Und wenn ich die Bindung verwende, kann sie nur an die Eigenschaft dieser Elemente binden. Manchmal sehe ich jedoch den Code, den wir auch an die Eigenschaft des Players in der Eigenschaft der Combobox binden können, besonders Selected Value und SelectedItem. Ich bin ein wenig verwirrt hier können Sie mir helfen?
danke
Für SelectedValue, SelectedItem, wenn wir eine Bindung haben, wird es an die Eigenschaft des Datenkontextes der Combobox gebunden (nicht die Eigenschaft jedes Elements in der ItemQuelle der Combobox). Also ist es die Eigenschaft des Players, die der Datenkontext der Combobox jetzt ist. Für SelectedValuePath, DisplayMemberPath: Wir verwenden Markup Syntax nicht, um ihnen den Wert zuzuweisen, so dass es nicht grundsätzlich bindend ist. Aus diesem Grund können wir immer noch den Namen der Eigenschaft des Elements in seiner item-Quelle zuweisen (nicht die Eigenschaft des Datenkontexts). Habe ich recht? – Tai