2009-04-21 6 views
1

Ich habe ein Diagramm-Designer-Programm und möchte zu Shapes (das sind Pfadobjekte) Text hinzufügen, wenn der Benutzer mit der rechten Maustaste auf ein Shape klickt und Shapelnamen in das Eigenschaftsfenster schreibt . Ich füge Shapes eine Kontextmenüeigenschaft hinzu und wenn der Benutzer im Kontextmenü auf "Eigenschaften" klickt, öffnet sich ein neues Fenster mit einem Textfeld und einer Schaltfläche. Ich kann den Shapes einen Textblock hinzufügen, aber ich kann das Textfeld im Eigenschaftenfenster nicht an den Textblock in der Form binden. Was ich möchte ist, wenn der Benutzer einen Text in das Textfeld im Eigenschaftenfenster eingibt und auf OK klickt, ändert sich der Textblock in der Form zu dem Text, den der Benutzer eingegeben hat.WPF Textblock auf einem Objekt hinzufügen und an ein Textfeld binden

Danke.

Antwort

1

Sie ein Steuerelement zu einem anderen binden können ein Element Bindung mit:

<TextBlock Text="{Binding Text, ElementName=TextBoxInPropertiesWindow}" /> 

aber das ist wahrscheinlich nicht das, was Sie in diesem Fall wollen, weil es wie das Eigenschaftenfenster klingt und das Textfeld bald weg gehen wird und/oder wiederverwendet werden, um andere Diagrammelemente zu bearbeiten.

Sie müssen also wirklich daran denken, sowohl das Textfeld als auch den Textblock an das zugrunde liegende Datenmodell/Viewmodel zu binden. Auf diese Weise kann das Textfeld das Modell aktualisieren (das nach dem Löschen des Textfelds immer noch vorhanden ist), und der Textblock wird dann als Reaktion auf die Änderung im Modell aktualisiert.

+0

Zuerst, danke für Ihre Bedenken. Aber ich weiß nicht, wie man "das Textfeld und den Textblock an das zugrunde liegende Datenmodell/Ansichtsmodell bindet". Kannst du es bitte erklären? –

+0

Sie haben eine Art zugrunde liegendes Datenmodell des Diagramms, z. B. ein Diagrammobjekt mit einer Sammlung von Shape-Objekten. Jeder TextBlock auf der Benutzeroberfläche ist an einen Shape.Text gebunden. Stellen Sie jetzt eine SelectedShape-Eigenschaft für das Diagramm bereit (oder im Ansichtsmodell, wenn dies nicht der Fall ist), aktualisieren Sie diese, wenn sich die Auswahl ändert, und binden Sie die TextBox an SelectedShape.Text. Hoffe, das macht jetzt mehr Sinn! – itowlson

+0

Ich habe es getan. Es dauert ein wenig Zeit, aber schließlich hat es funktioniert. Vielen Dank für Ihre Hilfe. –

0

Binden Sie den Datenkontext der ausgewählten Form an eine Eigenschaft im Fenster oder Controller mit der Bezeichnung SelectedItem, und binden Sie den Datenkontext des Eigenschaftenfensters an SelectedItem.