2009-05-06 27 views
5

Czy istnieje sposób na wykonanie kontrolki "kliknij, aby edytować" w silverlight? Mam niektóre elementy, które będą wyświetlane w kontrolce drzewa, i chciałbym, aby etykiety były edytowalne bezpośrednio w widoku drzewa.Kliknij, aby edytować w Silverlight

Ktoś wie, jak to zrobić?

+1

Łącze http://stackoverflow.com/questions/2088909/inline-editing-textblock-in-a-listbox-with-data-template-wpf/7687402#7687402 umożliwia kontrolę użytkownika "kliknij, aby edytować". Mam nadzieję że to pomoże. – Youngjae

Odpowiedz

9

Bardzo proste w rzeczywistości. Zaimplementowałem wiele form z takim mechanizmem wymiany.

Można to zrobić za pomocą konwertera i wykonać prostą konwersję BooleanToVisibility dla właściwości IsEditable, która istnieje w elementach powiązanych z drzewem TreeView. W ramach TreeView ItemTemplate po prostu binduj TextBlock w taki sposób, aby był zwinięty za każdym razem, gdy właściwość IsEditable ma wartość true, i powiązać TextBox w taki sposób, że zostanie zwinięty, gdy właściwość IsEditable ma wartość false (i na odwrót).

Jeśli chciał zbudować kontrolę zwyczaj ClickToEdit będzie trzeba wykonać następujące czynności:

  1. utworzyć klasę, która dziedziczy z ContentControl
  2. wystawiać nowe właściwości zależność typu DataTemplate: jeden o nazwie EditableTemplate.
  3. Dodaj moduł obsługi zdarzeń MouseLeftButtonUp do urządzenia OnApplyTemplate, aby odsłuchać kliknięcie.
  4. Zmień aktywny szablon zawartości, aby był edytowalnym szablonem w przypadku kliknięcia.
  5. Zmień szablon z powrotem, gdy kontrolka utraci ostrość.

teraz korzystać z niestandardowego formantu wewnątrz TreeView:

  1. nadpisało ItemTemplate dla TreeView
  2. Połóż niestandardowej kontroli ClickToEdit wewnątrz tam

Wdrażanie niestandardowego formantu pozwolisz (lub inni programiści), aby łatwo określić, jaką kontrolę chcieli użyć jako edytora treści. Na przykład mogą określić NumericUpDown lub DateTimePicker zamiast tylko używać TextBox.

Sprawdź DataForm w Silverlight 3. Ma podobną funkcjonalność, ale przełączanie opcji edycji lub tylko do odczytu nie odbywa się za pomocą kliknięcia.

+0

Czy możesz mi powiedzieć, jak ustawić fokus na formantu (TextBox) w EditableTemplate, kiedy przełączam przycisk ContentTemplate na kliknij? – Jehof

+0

Utknąłem z krokiem N 5 .. Oto mój kod http://stackoverflow.com/questions/28613473/click-to-edit-control-lostfocus-event-issue –

Powiązane problemy