1

これは非常に単純なようですが、カスタムコントロールに追加したい動作に関してWeb上で何も見つかりません。

私のカスタムコントロールは、選択肢のリストを含むtextBoxです。ユーザーが入力したテキストがリストに含まれていない場合は、リストとともにポップアップが表示され、ユーザーは正しい選択肢を選択できます。

カスタムコントロールが追加されたコンテナにデフォルトのボタンがある場合があります。その場合、エンターキーが押されたときにテキストが間違っていれば、ポップアップが表示されなければなりません。デフォルトのボタンがない場合、Enterキーを押すと、テキストが間違っていても何も起こらないはずです。

この動作を作成できるようにするには、コンテナー内のデフォルトボタンの存在を検出できる必要があります。これは、cutomコントロールのc#コード内で実行する必要があります。

説明が十分に明確であることを願っています。前もって感謝します

4

2 に答える 2

1

MVVMアプローチとコマンドパターンの実装について考えたことはありますか?ビューモデルが選択肢を認識している限り、デフォルトのボタンをコマンドにバインドできます。コマンドCanExecuteハンドラーがfalseを返す限り、つまり適切な選択肢が入力/選択されていない限り、ボタンは無効になり、ユーザーがEnterキーを押しても応答しません。

于 2011-08-08T15:14:55.723 に答える
0

カスタムコントロールから他にどのようなコントロールがあるかわからなかったので、次のように選択しました。

親を持つことで最初の親を見つけるために再帰関数を作成し、FrameworkElement.Parent それに含まれるすべてのコントロールを調べることができました。ボタンを見るとすぐに、かどうかを確認する必要がありIsDefaultました。VisualTreeHelper GetChildrenCount(DependencyObject obj_Parent)これには、とを使用しましたGetChild(DependencyObject obj_Parent, int childIndex)。再帰性をもう一度...

実行するコードが増えることを意味しますが、非常にうまく機能します。

于 2011-08-09T12:52:30.347 に答える