テキスト ボックス内の値の単位を選択できるコントロールを作成したいと考えていました。これをアーカイブするために、テキストボックスの後にボタンを付けて、使用可能なユニットを含む ListBox を含むホバー時にポップアップを開きました。
このポップアップにボタンを配置すると、すべて正常に動作し、ホバー効果が得られ、ボタンをクリックできます。しかし、ListBox は期待どおりに機能しません。特別なことを何もしていないので、リストボックスの項目をクリックしたりフォーカスしたりすることができません。ポップアップの FocusManager.IsFocusScope を true に設定すると、最初にウィンドウにフォーカスし、次に ListBox にフォーカスするために、2 回のクリックでアイテムを選択できます。プログラムでフォーカスを移動しても、どちらも役に立ちませんでした。
ポップアップの例:
<Popup x:Name="PART_UnitPopup"
PlacementTarget="{Binding}"
Placement="Bottom">
<StackPanel>
<ListBox x:Name="PART_UnitPopupListBox" ItemsSource="{Binding,Path=Units}"/>
<Button Content="Click me!" />
</StackPanel>
</Popup>
いくつかのことを読んで、ポップアップの開いたイベントまたはフォーカスイベントにフォーカスを移動していくつかの解決策を試しましたが、この作業をボタンのように通常のスタイルで動作させません。このタスクを達成するためにpopop以外の方法もあるかもしれませんが、それは良い解決策であると思われ、動作していると言われ、あまり変わらないコードの束を見つけました.