2009-05-06 4 views
5

Silverlightで「クリック編集」コントロールを作成する方法はありますか?私は がツリービューコントロールに表示されるいくつかのアイテムを持っており、ツリービューで直接ラベルを編集できるようにしたいと思います。Silverlightでクリック編集する

誰でもこの方法を知っていますか?

+1

リンクhttp://stackoverflow.com/questions/2088909/inline-editing-textblock-in-listbox-with-data-template-wpf/7687402#7687402は、クリック編集のusercontrolを提供します。お役に立てれば。 – Youngjae

答えて

9

実際には非常に簡単です。私はそのようなスワッピングの仕組みで多くのフォームを実装しました。

これはConverterを使用して行うことができ、TreeViewにバインドするエンティティに存在するIsEditableプロパティで簡単なBooleanToVisibility変換を実行できます。 TreeView内のItemTemplateは、IsEditableプロパティがtrueの場合はいつでもCollapsedになり、IsEditableプロパティがfalseの場合はCollapsされるようにTextBoxをバインドするようにTextBlockをバインドするだけです(逆も同様です)。

あなたは次のことを行う必要がありますカスタムClickToEditコントロールを構築したい場合:

  1. ContentControlに
  2. から継承するクラスを作成しますタイプのDataTemplateの新しい依存関係プロパティを公開:EditableTemplateと呼ばれる1。
  3. OnApplyTemplate内にMouseLeftButtonUpイベントハンドラを追加して、クリックを待機します。
  4. クリックイベントで、アクティブコンテンツテンプレートを編集可能テンプレートに変更します。
  5. コントロールがフォーカスを失ったときにテンプレートを元に戻します。内部あなたが

カスタムコントロールを実装できるようになる

  • 、カスタムClickToEditコントロールを配置

      は、あなたのツリービューのためのあなたのItemTemplateにをオーバーライド

    は今、ツリービュー内のカスタムコントロールを使用します(または他の開発者)がコンテンツエディタとして使用したいコントロールを簡単に指定できます。たとえば、TextBoxを使用する代わりに、NumericUpDownまたはDateTimePickerを指定することができます。

    Silverlight 3でDataFormをチェックアウトします。これは同様の機能を持ちますが、編集可能と読み取り専用の切り替えはクリックしないで行います。

  • +0

    ボタンクリックでContentTemplateを切り替えるときにEditableTemplateのコントロール(TextBox)にフォーカスを設定する方法を教えてください。 – Jehof

    +0

    私はステップN5で立ち往生しています..ここに私のコードですhttp://stackoverflow.com/questions/28613473/click-to-edit-control-lostfocus-event-issue –

    関連する問題