5

アイテムのリストを表示するコンボボックスがあり、その横にボタンを配置して、選択したアイテムの詳細を表示するコマンドをトリガーしたいと考えています。ここまでは順調ですね。ここで、コンボボックスにフォーカスがある場合 (または、ポップアップが開いているときだけでなく、「編集」モードになっている場合) にのみボタンを表示するようにします。

ボタンの可視性を、次のようなコンボボックスのフォーカス プロパティにバインドできると考えました。

<Button Content="Details" Visibility="{Binding ElementName=elementListComboBox,
Path=IsFocused, Converter={StaticResource Bool2VisibilityConverter}}"/>

しかし、必要なコントロールがフォーカスされているかどうかを知る方法が見つかりませんでした。FocusManager.FocusedElement を見ましたが、バインディング内で必要なフォーカスされたコントロールを取得する方法がわかりません。XAML でこれを達成する方法はありますか?

4

1 に答える 1

11

わかりました、これを希望どおりに機能させる方法は次のとおりです。

 <Button Command="{Binding SomeCommand}"
         Content="Details" 
         Focusable="False"
         Visibility="{Binding ElementName=elementListComboBox, 
                      Path=IsKeyboardFocusWithin, 
                      Converter={StaticResource Bool2VisibilityConverter}}"/>

ここでの 2 つの重要な要因: ボタンの可視性をコンボボックスの IsKeyboardFocusWithin プロパティにバインドし、ボタンの Focusable プロパティを false に設定します。そうしないと、クリックしたときに折りたたまれます。

これが役に立つことを願っています。

于 2012-12-29T11:38:31.847 に答える