Aslında çok kolay. Bu tür bir takas mekanizmasıyla birçok form geliştirdim.
Bunu bir Dönüştürücü kullanarak yapabilir ve TreeView'unuza bağladığınız varlıklarda bulunan bir IsEditable özelliğinde basit bir BooleanToVisibility dönüşümü yapabilirsiniz. TreeView öğenizin içinde TextTlock, IsEditable özelliği true olduğunda daraltılmış bir şekilde TextBlock'u bağlar ve TextBox, IsEditable özelliği false olduğunda (ve tersi) bu şekilde katıştırılacak şekilde bağlar.
sen aşağıdakileri yapmanız gerekir özel ClickToEdit denetimi oluşturmak isteseydik: EditableTemplate diye bir tane:
- tip DataTemplate yeni bir bağımlılık özelliklerini ortaya çıkarın ContentControl
- devralan bir sınıf oluşturun.
- Tıklamayı dinlemek için OnApplyTemplate'ınızın içinde bir MouseLeftButtonUp olay işleyicisi ekleyin.
- Etkin içerik şablonunu, click olayı için DüzenlenebilirTemplate olacak şekilde değiştirin.
- Denetim odağı kaybettiğinde şablonu tekrar değiştirin. İçerde orada
özel bir denetim uygulanması sağlayacak
özel ClickToEdit kontrolü koyun
sizin TreeView için ItemTemplate geçersiz kılar
- :
Şimdi TreeView içindeki özel denetimi kullanma (veya diğer geliştiriciler), içerik editörü olarak kullanmak istedikleri kontrolü kolayca belirtmek için. Örneğin, yalnızca bir TextBox kullanmak yerine bir NumericUpDown veya bir DateTimePicker belirtebilirler.
Silverlight 3'teki DataForm'a bakın. Benzer işlevselliklere sahiptir, ancak düzenlenebilir ve salt okunur anahtarlama işlemi bir tıklama ile yapılmaz.
http://stackoverflow.com/questions/2088909/inline-editing-textblock-in-a-listbox-with-data-template-wpf/7687402#7687402 bağlantısı, tıklatılarak düzenlenmiş usercontrol verir. Bu yardımcı olur umarım. – Youngjae