在 GridView 列中的按钮上绑定弹出窗口

Bind Popup on a Button in a GridView Column

我有点问题。在我的窗口上,我有一个 GridView,在 GridView 的每一行上都有一个 Button(按钮是 GridViewColumn.CellTemplate 的一部分)。现在我想,当我按下 Button 时,Popup 应该在按下的 Button 下打开。

但是我如何将 Popup 绑定到网格中的 Button 上,因为 Button 是动态的(对于每一行 Button)。

 <Popup Name="popup_Zuordnungen">
        <controls:Anlagenzuordnung Grid.Row="3" x:Name="VertragsAnlagenPopup" Margin="0,20,0,0">     </controls:Anlagenzuordnung>
 </Popup>

<ListView Grid.Row="1" Name="lv_Leistungserbringer" DataContextChanged="lv_Leistungserbringer_DataContextChanged" SelectionChanged="lv_Leistungserbringer_SelectionChanged" ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:VertragsLeistungserbringerZuordnung}}, Path=DataSource}" Height="150" VerticalAlignment="Bottom">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="ID">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=ID}" Width="40" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

                <GridViewColumn Header="Bezeichnung">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=Beschreibung}" Width="500" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

                <GridViewColumn>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Button Content="Zuordnungen anzeigen" Name="cmd_Zuordnungen"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

按钮在最后一列。

哪里有出租车帮我?

这是一个带有代码隐藏的Window

在这种情况下,您只需将点击事件添加到您的按钮(在 DataTemplate 中),并在事件处理程序中处理弹出窗口的放置:

XAML:

...
<DataTemplate>
    <Button Content="Zuordnungen anzeigen" Name="cmd_Zuordnungen"
            Click="cmd_Zuordnungen_Click" />
</DataTemplate>

代码:

private void cmd_Zuordnungen_Click(object sender, RoutedEventArgs e)
{
    popup_Zuordnungen.IsOpen = false;
    popup_Zuordnungen.PlacementTarget = (Button)sender;
    popup_Zuordnungen.IsOpen = true;
}