在 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;
}
我有点问题。在我的窗口上,我有一个 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;
}