私はあなたが探していることをする最もきれいな方法はポップアップを使うことだと思います。Popupクラスは、画面上の残りの要素の上に浮かぶ要素を表示しますが、非モーダルであり、ユーザーがクリックすると消えるように構成できます。これは、非モーダルダイアログに最適です。Popupクラスには、別のコントロール(この場合、ユーザーがポップアップを開くために押すボタン)と比較して表示される場所を制御できるプロパティがあります。
これがすべてXAMLの例です。
<Grid>
<ToggleButton HorizontalAlignment="Center" VerticalAlignment="Top"
x:Name="PopButton" Content="Pop"/>
<Popup Placement="Bottom" PlacementTarget="{Binding ElementName=PopButton}" StaysOpen="False"
IsOpen="{Binding ElementName=PopButton, Path=IsChecked, Mode=TwoWay}">
<Rectangle Height="100" Width="200" Fill="Blue"/>
</Popup>
</Grid>
コマンドまたはイベントハンドラーを使用して、コードからポップアップを開いたり閉じたりすることもできます。
PlacementプロパティとPlacementTargetプロパティは、ポップアップが表示される場所と、ポップアップが相対的に表示されるコントロールを設定します(現在の位置とマウスを基準にしてポップアップを表示できるオプションは他にもあります)。StaysOpenをFalseに設定すると、ユーザーがポップアップの外側をクリックしたときにWPFがポップアップを自動的に閉じます。
デフォルトでは、ポップアップには独自のスタイルはありません。これはフローティングコンテンツの単なるコンテナであるため、ウィンドウのクロム/ツールバーなどのようにスタイルを設定する必要があります。適切に。