2011-01-01 1 views
1

wpfでカスタムコントロールを作成中です。私はコンボボックスを親として使用しました。 私のカスタムコンボボックスは、その親のようにどのように機能するのだろうか?どのように私の画面の任意の部分をクリックし、私のコンボボックスのドロップダウン部分を閉じることができます...私は多くの方法を試みたが、どちらも正しく動作していません。wpf(またはsilverlight)のコンボボックスに関する実装の詳細について質問したい

誰かが何か他の記事を投稿できますか?

+0

XAMLとコードを含めます。 –

+1

"ポップアップ"と呼ばれるComboBoxの一部があります。ユーザーが外部の場所をクリックした場合にComboBoxを閉じるかどうかを示すプロパティ "StaysOpen"があります。 – vorrtex

+0

ありがとう!私が試してみます。しかし、私は内部の実装を知りたいです – jiluo

答えて

1

ComboBoxの標準コントロールテンプレートは、WPFSilverlightです。

WPF例のポップアップとトグルボタン(右矢印)がプロパティIsDropDownOpenと結合されている:

<Popup IsOpen="{TemplateBinding IsDropDownOpen}" ... 

<ToggleButton IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" ... 

クラスPopupは、標準テンプレートに指定されていない性質StaysOpenを有しますComboBoxのデフォルト値はtrueです。コントロールがフォーカスを失うたびにIsDropDownOpen=falseを設定するComboBoxの内部実装でLostFocusイベントのサブスクリプションが存在することになります。

Silverlightにはxamlにバインディングはありませんが、.NET Reflectorでアセンブリを開くと同じシーケンスが見つかります。

+0

私はwpfでコンボボックスの実装を読んでいます。私自身の実装はトグルボタンを必要としないので、私はIsDropDownOpenを使用しません。自分でdropdownopenを処理します。お返事ありがとう! – jiluo

関連する問題