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

时间:2015-01-05 13:50:00

标签: c# wpf gridview popup

我有点问题。在我的窗口上,我有一个GridViewGridView的每一行都是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>

按钮位于最后一列。

出租车在哪里帮助我?

1 个答案:

答案 0 :(得分:1)

这是一个带有代码隐藏的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;
}