ここで2つの問題があります。いくつかの項目が入力された DataGrid があります。私がしたいのは、選択した DataGrid 行の下に Popup コントロールを表示することです。ここに私が持っているものがあります:
<Grid>
<DataGrid CanUserReorderColumns="False"
CanUserSortColumns="False"
HeadersVisibility="None"
AutoGenerateColumns="False"
VerticalAlignment="Stretch"
ItemsSource="{Binding ItemCollection}"
SelectedItem="{Binding SelectedItem}">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Binding="{Binding Path=Key}" />
<DataGridTextColumn Width="*" Binding="{Binding Path=Value}" />
</DataGrid.Columns>
</DataGrid>
<Popup PopupAnimation="Scroll" Placement="Bottom" AllowsTransparency="True" IsOpen="{Binding PopupVisible}" Margin="0" StaysOpen="True" >
<local:PopupControl />
</Popup>
</Grid>
SelectedItem が次のように変更されたときに、ViewModel で IsOpen プロパティを設定します。
PopupVisible = true;
このコードで、ポップオーバーを表示できます。
最初の問題: StaysOpen = "True" の場合、ウィンドウを移動してもポップアップは移動しません。Button コントロールでこれを処理する方法は、StaysOpen を "False" に変更して、ウィンドウ内の別の場所をクリックしたときにポップアップが閉じられるようにすることです。DataGrid コントロールでこれを行うと、SelectedItem が変更されたときにポップアップがまったく表示されません。どうしてこれなの?
2 番目の問題:選択した行の下にポップアップを表示するにはどうすればよいですか?